1. 定义快速排序函数 quickSort(arr, left, right),其中 arr 为待排序数组,leftright 分别为左右指针
  2. 如果 left >= right,则返回
  3. 定义 ij 分别为左右指针,key 为基准数,temp 为交换数
  4. arr[left] 赋值给 key
  5. i < j 时,执行以下循环: a. 从右向左扫描,找到第一个小于 key 的数,将其下标赋值给 j b. 从左向右扫描,找到第一个大于 key 的数,将其下标赋值给 i c. 如果 i < j,则交换 arr[i]arr[j]
  6. keyarr[left] 交换
  7. 递归调用 quickSort(arr, left, i-1)quickSort(arr, i+1, right)

伪代码:

function quickSort(arr, left, right) {
    if (left >= right) {
        return;
    }
    let i = left, j = right, key = arr[left], temp;
    while (i < j) {
        while (i < j && arr[j] >= key) {
            j--;
        }
        while (i < j && arr[i] <= key) {
            i++;
        }
        if (i < j) {
            temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    arr[left] = arr[i];
    arr[i] = key;
    quickSort(arr, left, i-1);
    quickSort(arr, i+1, right);
}
快速排序算法伪代码:100000个1到100的随机数排序

原文地址: https://www.cveoy.top/t/topic/n5hV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录