Код | template <typename T> void qSort(T* A, size_t low, size_t high) { int i = low; int j = high; T x = A[(low+high)/2]; // x - опорный элемент посредине между low и high do { while(A[i] < x) ++i; // поиск элемента для переноса в старшую часть while(A[j] > x) --j; // поиск элемента для переноса в младшую часть if(i <= j){ // обмен элементов местами: T temp = A[i]; A[i] = A[j]; A[j] = temp; // переход к следующим элементам: i++; j--; } } while(i < j); if(low < j) qSort<T>(A, low, j); if(i < high) qSort<T>(A, i, high); }
int evenMax(int* arry, size_t size) { int* arrcpy = new int[size]; memcpy(arrcpy, arry, size); qSort<int>(arrcpy, 0, size); int numEven=0; for (; numEven <= (size+1); numEven++){ if (numEven == (size+1)) break; if (arry[numEven]/2 == (int)arry[numEven]/2) break; } delete[] arrcpy; return numEven; }
|
|