排序算法---快速排序
写给自己看的,防止忘记,尽量干货,初学者绕过。
快速排序采用的思想是分治思想。
给出一些无序数值,任意取一个作为基准,基准的左边都是比它小的,基准的右边都是比他大的,递归快速排序即可。
public static void quickSort1(int[] num, int left, int right) {
if (num == null || num.length == 0 || left >= right) {
return;
}
int low = left, high = right;
int key = num[low]; // 任意选择一个做为key,接下来做的就是小于key的和大于key的互换,最后key放中间
while (low < high) {
while (num[high] > key) {
high--;
}
num[low] = num[high];
while (num[low] <= key && low < high) {//必须等号,不然相同数值会产生死循环
low++;
}
num[high] = num[low];
}
num[low] = key;//将key塞回
quickSort1(num, left, low - 1);
quickSort1(num, low + 1, right);
}
还可以改进,持续更新。。。