Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <stdlib.h>
- #include <conio.h>
- #include <Bits.h>
- #include <time.h>
- #include <chrono>
- using namespace std;
- void minmax1(int A[], int &j, int &k, int &size )
- {
- int i;
- int n = size;
- j=0;
- for(i=1; i < n; i++)
- {
- if(A[i]>A[j])
- {
- j=i;
- }
- }
- k=0;
- for(i=1; i<n; i++)
- {
- if(A[i]<A[k])
- {
- k=i;
- }
- }
- }
- void minmax2(int A[], int &j, int &k, int &size )
- {
- int n = size;
- int i;
- j = 0; k = 0;
- for(i=1; i<n; i++)
- if(A[i] > A[j])
- j = i;
- else if (A[i] < A[k])
- k = i;
- }
- void minmax3(int A[], int &j, int &k, int &size )
- {
- int i,min,max;
- int n = size;
- if(A[0]>A[1])
- {
- k=1;
- j=0;
- }
- else
- {
- k=0;
- j=1;
- }
- i = 2;
- while(i<n-1)
- {
- if(A[i]<A[i+1])
- {
- min = i;
- max = i+1;
- }
- else
- {
- min = i+1;
- max = i;
- }
- if( A[min] < A[k] )
- {
- k = min;
- }
- if( A[max] > A[j] )
- {
- j = max;
- }
- i+=2;
- }
- if( i == n-1 )
- {
- if(A[n-1]<A[k])
- {
- k=n-1;
- }
- else
- {
- if(A[n-1]<A[k])
- {
- j=n-1;
- }
- }
- }
- }
- int pot( int x, int y )
- {
- int potega=1;
- while(y!=0)
- {
- if( y%2 == 1 )
- {
- potega *=x;
- }
- y /= 2;
- x *= x;
- }
- return potega;
- }
- void wybieranie( int A[], int size )
- {
- int k, x;
- int n = size;
- for( int i=0; i< n-1; i++ )
- {
- k=i;
- x=A[i];
- for( int j=i+1; j<n; j++ )
- {
- if(A[j]<x)
- {
- k=j;
- x=A[j];
- }
- A[k]=A[i];
- A[i]=x;
- }
- }
- }
- int main()
- {
- srand(time(NULL));
- int *A;
- int j;
- int k;
- clock_t start, finish;
- //double duration;
- int size = 2000000;
- A = new int[size];
- for( int i=0; i<size; i++ )
- {
- A[i] = rand() % 1000 + 1;
- }
- std::cout<<"Comparison of functions minmax for "<< size << " elements in the array " << std::endl << std::endl;
- std::cout<<"test function minmax1: "<<std::endl;
- start = clock();
- high_resolution_clock::time_point t1 = high_resolution_clock::now();
- minmax1(A, j, k, size);
- finish = clock();
- high_resolution_clock::time_point t2 = high_resolution_clock::now();
- duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
- //duration = (double)(finish - start) / CLOCKS_PER_SEC;
- std::cout << "It took me " << time_span.count() << " seconds.";
- //printf("%2.10f seconds\n", duration);
- printf("%d, %d\n", A[j], A[k] );
- printf("On positions: %d, %d\n\n", j, k );
- //Function minmax1
- /*std::cout<<"test function minmax1: "<<std::endl;
- start = clock();
- minmax1(A, j, k, size);
- finish = clock();
- duration = (double)(finish - start) / CLOCKS_PER_SEC;
- printf("%2.10f seconds\n", duration);
- printf("%d, %d\n", A[j], A[k] );
- printf("On positions: %d, %d\n\n", j, k );
- //Function minmax2
- std::cout<<"test function minmax2: "<<std::endl;
- start = clock();
- minmax2(A, j, k, size);
- finish = clock();
- duration = (double)(finish - start) / CLOCKS_PER_SEC;
- printf("%2.10f seconds\n", duration);
- printf("%d, %d\n", A[j], A[k] );
- printf("On positions: %d, %d\n\n", j, k );
- ///Function minmax3
- std::cout<<"test function minmax3: "<<std::endl;
- start = clock();
- minmax3(A, j, k, size);
- finish = clock();
- duration = (double)(finish - start) / CLOCKS_PER_SEC;
- printf("%2.10f seconds\n", duration);
- printf("%d, %d\n", A[j], A[k] );
- printf("On positions: %d, %d\n\n", j, k );
- delete[] A;
- //Function pot
- std::cout<<"test function pot:"<<std::endl;
- int x = 2;
- int value;
- for( int i=1; i<=5; i++ )
- {
- int numbers_of_iterations = 10000000*i;
- std::cout<<"Comparison of function pot for "<< numbers_of_iterations << " iterations"<< std::endl;
- start = clock();
- for(int i=0; i<numbers_of_iterations; i++)
- {
- value = pot( x, i );
- }
- finish = clock();
- duration = (double)(finish - start) / CLOCKS_PER_SEC;
- std::cout<<"Duration for "<<numbers_of_iterations<<" iterations "<<std::endl;
- printf("%2.10f seconds\n", duration);
- std::cout<<value<<std::endl<<std::endl;
- }
- */
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement