Исправлено:
#include <iostream>
void copy(double* dest, const double* src, const int size) {
for (int i = 0; i < size; i++) dest[i] = src[i];
}
double* quick_sort(double* dest, const double* src, const int size) {
if (size == 0) return nullptr;
double* left_array = new double[size];
double* right_array = new double[size];
double pivot = src[0];
int left_size = 0; // initialize this
int right_size = 0;
for (int i = 1; i < size; i++) {
if (src[i] < pivot) {
left_array[left_size++] = src[i];
} else {
right_array[right_size++] = src[i];
}
}
quick_sort(left_array, left_array, left_size);
quick_sort(right_array, right_array, right_size);
copy(dest, left_array, left_size);
dest[left_size] = pivot;
copy(dest + left_size + 1, right_array, right_size);
delete[] left_array;
delete[] right_array;
return dest;
}
void print(const double arr[], const int size) {
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << "\n";
}
int main() {
double src[20];
double dest[20];
for (int i = 0; i < 20; ++i) src[i] = 7 * i % 16;
quick_sort(dest, src, 20);
print(dest, 20);
return 0;
}
Результат:
0 0 1 2 3 4 5 5 6 7 7 8 9 10 11 12 13 14 14 15