快速排序

734 阅读1分钟

C 语言练习一下快速排序算法, 今天给记录到文章中方便以后随时随地查看😄, 主要有一个交换数组两个元素和快速排序的升序降序两种情况;

快速排序

void quickSort(int *list, int left, int right) {

    if (left >= right) { return; }
    
    int i = left;
    int j = right;

    int key = list[i];

    while (i < j) {
      
        while (i < j && list[j] >= key) {
            j--;
        }
        swap(list, i, j);

        while (i < j && list[i] <= key) {
            i++;
        }
        swap(list, i, j);
    }
    
    list[i] = key;
    
    quickSort(list, left, i-1);
    quickSort(list, i+1, right);
}

注意: swap 函数参照 交换数组元素的位置 这篇文章

降序: 需要完成如下两步即可

  1. list[j] >= key 改成 list[j] <= key
  2. list[i] <= key 改成 list[i] >= key