Мне было интересно, может ли кто-нибудь помочь мне в быстрой сортировке. Я понимаю общую идею для разделения, но не уверен, почему он возвращает индекс
int partition(int arr[], int left, int right)
{
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
return i;
}
void quickSort(int arr[], int left, int right) {
int index = partition(arr, left, right);
if (left < index - 1)
quickSort(arr, left, index - 1);
if (index < right)
quickSort(arr, index, right);
}
Я понимаю всю часть перестановки. это имеет смысл для меня, но я не уверен, почему раздел возвращает только индекс. я думал, что это должно было вернуть массив? как если бы проблема была в ... Сортировке {1, 12, 5, 26, 7, 14, 3, 7, 2} Я думал, что это вернется ...
1, 2, 5, 7, 3, 14, 7, 26, 12
Наверное, поэтому я не понимаю действительную функцию быстрой сортировки. но если бы кто-то мог помочь объяснить это ясно и легко понять, это было бы очень ценно. Большое спасибо!