#include <iostream>
#include <cstdlib>
#include <fstream>
#include <ctime>
#include <cstring>
const int N = 10000000;
using namespace std;
void generate(int *tab, int N)
{
for (int i = 0; i < N; i++)
{
*tab = rand() % 100 + 1;
tab++;
}
}
void minMax_optimalized(int *x, int N)
{
int max=x[0], min=x[0];
int temp;
for (int i = 0; i < N; i+=2)
{
if (x[i + 1] > x[i])
{
temp = x[i];
x[i] = x[i + 1];
x[i + 1] = temp;
}
}
for (int i = 0; i < N; i+=2)
{
if (max < x[i])
max = x[i];
if (min > x[i+1])
min = x[i+1];
}
cout << "Max: " << max << endl << "Min: " << min << endl;
}
void minMax(int *x, int N)
{
int min = x[0], max = x[0];
for (int i = 0; i < N; i++)
{
if (max < x[i])
max = x[i];
if (min > x[i])
min = x[i];
}
cout << "Max: " << max << endl << "Min: " << min << endl;
}
int main()
{
srand(time(NULL));
int data[N];
generate(data,N);
clock_t begin = clock();
minMax_optimalized(data, N);
clock_t end = clock();
cout<<"Time optimized: "<< double(end - begin) / CLOCKS_PER_SEC<<endl;
begin = clock();
minMax(data, N);
end = clock();
cout << "Time : " << double(end - begin) / CLOCKS_PER_SEC;
getchar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGZzdHJlYW0+CiNpbmNsdWRlIDxjdGltZT4KI2luY2x1ZGUgPGNzdHJpbmc+Cgpjb25zdCBpbnQgTiA9IDEwMDAwMDAwOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBnZW5lcmF0ZShpbnQgKnRhYiwgaW50IE4pCnsKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQoJewoJCSp0YWIgPSByYW5kKCkgJSAxMDAgKyAxOwoJCXRhYisrOwoJfQp9Cgp2b2lkIG1pbk1heF9vcHRpbWFsaXplZChpbnQgKngsIGludCBOKQp7CglpbnQgbWF4PXhbMF0sIG1pbj14WzBdOwoJaW50IHRlbXA7Cglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrPTIpCgl7CgkJCWlmICh4W2kgKyAxXSA+IHhbaV0pCgkJCXsKCQkJCXRlbXAgPSB4W2ldOwoJCQkJeFtpXSA9IHhbaSArIDFdOwoJCQkJeFtpICsgMV0gPSB0ZW1wOwoJCQl9Cgl9Cglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrPTIpCgl7CgkJaWYgKG1heCA8IHhbaV0pCgkJCW1heCA9IHhbaV07CgkJaWYgKG1pbiA+IHhbaSsxXSkKCQkJbWluID0geFtpKzFdOwoJfQoJY291dCA8PCAiTWF4OiAiIDw8IG1heCA8PCBlbmRsIDw8ICJNaW46ICIgPDwgbWluIDw8IGVuZGw7Cn0KCnZvaWQgbWluTWF4KGludCAqeCwgaW50IE4pCnsKCWludCBtaW4gPSB4WzBdLCBtYXggPSB4WzBdOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspCgl7CgkJaWYgKG1heCA8IHhbaV0pCgkJCW1heCA9IHhbaV07CgkJaWYgKG1pbiA+IHhbaV0pCgkJCW1pbiA9IHhbaV07Cgl9Cgljb3V0IDw8ICJNYXg6ICIgPDwgbWF4IDw8IGVuZGwgPDwgIk1pbjogIiA8PCBtaW4gPDwgZW5kbDsKfQoKCmludCBtYWluKCkKewoJc3JhbmQodGltZShOVUxMKSk7CglpbnQgZGF0YVtOXTsKCWdlbmVyYXRlKGRhdGEsTik7CgljbG9ja190IGJlZ2luID0gY2xvY2soKTsKCW1pbk1heF9vcHRpbWFsaXplZChkYXRhLCBOKTsKCWNsb2NrX3QgZW5kID0gY2xvY2soKTsKCWNvdXQ8PCJUaW1lIG9wdGltaXplZDogIjw8IGRvdWJsZShlbmQgLSBiZWdpbikgLyBDTE9DS1NfUEVSX1NFQzw8ZW5kbDsKCWJlZ2luID0gY2xvY2soKTsKCW1pbk1heChkYXRhLCBOKTsKCWVuZCA9IGNsb2NrKCk7Cgljb3V0IDw8ICJUaW1lIDogIiA8PCBkb3VibGUoZW5kIC0gYmVnaW4pIC8gQ0xPQ0tTX1BFUl9TRUM7CglnZXRjaGFyKCk7CiAgICByZXR1cm4gMDsKfQoK