随机生成100000的个 1 到 100 之间到随机数随机数中重复数据的个数为:10 × 10即随机数中有 10 个数存在重复数据每个数据重复 10 次。请给出快速排序的算法伪代码
- 定义快速排序函数 quickSort(arr, left, right),其中 arr 为待排序数组,left 和 right 分别为左右指针
- 如果 left >= right,则返回
- 定义 i 和 j 分别为左右指针,key 为基准数,temp 为交换数
- 将 arr[left] 赋值给 key
- 当 i < j 时,执行以下循环: a. 从右向左扫描,找到第一个小于 key 的数,将其下标赋值给 j b. 从左向右扫描,找到第一个大于 key 的数,将其下标赋值给 i c. 如果 i < j,则交换 arr[i] 和 arr[j]
- 将 key 与 arr[left] 交换
- 递归调用 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);
}
``
原文地址: https://www.cveoy.top/t/topic/fcIV 著作权归作者所有。请勿转载和采集!