快速排序
2020-09-15 本文已影响0人
亼珏
基本思想
快速排序的基本思想是通过一趟排序将待排序的记录分隔成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整体有序的目的。
快速排序相当于冒泡排序的升级, 同属于交换排序
类,它也是通过不断比较和移动交换来实现排序的,只不过它增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较小的记录从后面直接移动到前面,从而减少了总的比较和移动交换次数。
快速排序算法
void quickSort(int[] array, int low, int high) {
while (low < high) {
int pivot = partition(array, low, high);
quickSort(array, low, pivot);
low = pivot + 1;
}
}
int partition(int[] array, int low, int high) {
int pivotKey = array[low];
while (low < high) {
while (low < high && array[high] >= pivotKey) {
high--;
}
array[low] = array[high];
while (low < high && array[low] <= pivotKey) {
low++;
}
array[high] = array[low];
}
array[low] = pivotKey;
return low;
}