|  | 
 
20鱼币 
| #include <stdio.h> 
 void quick_sort(int length, int array[]);
 
 void quick_sort(int length, int array[])
 {
 int i, j, mid, num;
 mid = length / 2 - 1;
 for(i = 0, j = length - 1; i <= j;)
 {
 if(array[i] < array[mid])
 {
 i++;
 }
 
 if(array[j] >= array[mid])
 {
 j--;
 }
 
 if(array[i] >= array[mid] && array[j] < array[mid])
 {
 num = array[i];
 array[i] = array[j];
 array[j] = num;
 }
 
 printf("i = %d, j = %d\n", i, j);
 }
 
 for(i = 0; i < length - 1; i++)
 {
 if(array[i] > array[i + 1])
 {
 quick_sort(length, array);
 }
 }
 }
 
 int main(void)
 {
 int i;
 int array[10] = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};
 
 quick_sort(10, array);
 
 for(i = 0; i < 10; i++)
 {
 printf("%d ", array[i]);
 }
 
 return 0;
 }
 问题描述   为什么函数quick_sort里的array[mid]=0而不是7?
 
复制代码#include <stdio.h>
void quick_sort(int* arr, int left, int right);
void quick_sort(int* arr, int left, int right) {
    if (left >= right) {
        return;
    }
    int i = left;
    int j = right;
    int key = arr[left];
    while (i < j) {
        while (i < j && arr[j] >= key) {
            j--;
        }
        arr[i] = arr[j];
        while (i < j && arr[i] <= key) {
            i++;
        }
        arr[j] = arr[i];
    }
    arr[i] = key;
    quick_sort(arr, left, i - 1);
    quick_sort(arr, i + 1, right);
}
int main(void) {
    int i;
    int array[10] = {5, 2, 9, 4, 7, 8, 6, 3, 0, 1};
    quick_sort(array, 0, 9);
    for(i = 0; i < 10; i++)
    {
        printf("%d ", array[i]);
    }
    return 0;
}
 | 
 |