12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #include <iostream>
- #include <algorithm>
- void quickSort(int arr[], int low, int high) {
- if (low < high) {
- int pivot = arr[high];
- int i = low - 1;
- for (int j = low; j < high; j++) {
- if (arr[j] < pivot) {
- i++;
- std::swap(arr[i], arr[j]);
- }
- }
- std::swap(arr[i + 1], arr[high]);
- int partitionIndex = i + 1;
- quickSort(arr, low, partitionIndex - 1);
- quickSort(arr, partitionIndex + 1, high);
- }
- }
- int main() {
- int arr[] = {12, -5, 3, 7, 8, -2, 4, 1, -1, 6};
- int n = sizeof(arr) / sizeof(arr[0]);
- double sum = 0;
- for (int i = 0; i < n; i++) {
- sum += arr[i];
- }
- double average = sum / n;
- if (average > 0) {
- quickSort(arr, 0, (2 * n / 3) - 1);
- } else {
- quickSort(arr, 0, (n / 3) - 1);
- }
- for (int i = (2 * n / 3); i < n; i++) {
- std::swap(arr[i], arr[n - 1 - (i - (2 * n / 3))]);
- }
- std::cout << "Результат: ";
- for (int i = 0; i < n; i++) {
- std::cout << arr[i] << " ";
- }
- std::cout << std::endl;
- return 0;
- }
|