1、核心思想:
空
2、时间复杂度:O(nlogn)
3、稳定性:不稳定
4、空间复杂度:O(n)
5、上代码:
public static void main(String[] args) {
int[] array = new int[]{10, 2, 21, 91, 0, 7, 45, 9, 80};
quickSort(array, 0, array.length-1);
System.out.println(Arrays.toString(array));
}
public static void quickSort(int[] array, int left, int right){
// 从左开始的下标
int start = left;
// 从右开始比较的下标
int end = right;
int temp = 0; // 临时变量
while(start < end){
// 循环从右边寻找比基准数小的元素
while(start < end){
// 当从右边寻找到比基准数小的元素,将该元素与基准数交换
if(array[end] < array[start]){
temp = array[start];
array[start] = array[end];
array[end] = temp;
// 在缩减后的范围内进行下一次对基准数的比较
break;
}
// 每次从右寻找的元素不比基准数小时,则右边寻找范围-1
end--;
}
// 循环从左边寻找比基准数大的元素
while(start < end){
// 当从左边寻找到比基准数大的元素,将该元素与基准数交换
if(array[start] > array[end]){
temp = array[start];
array[start] = array[end];
array[end] = temp;
// 在缩减后的范围内进行下一次对基准数的比较
break;
}
// 每次从左寻找的元素不比基准数大时,则大边寻找范围+1
start++;
}
}
// 当基准数寻找到中间位置,且两边各自的元素范围>1
if(left < right){
// 将左边元素做进一步排序
quickSort(array, left, start-1);
// 将右边元素做进一步排序
quickSort(array, start+1, right);
}
}
6、打印结果:
[0, 2, 7, 9, 10, 21, 45, 80, 91]
Process finished with exit code 0
看懂了喜欢的可以点个赞哦,后续还会出新的笔记分享,谢谢大家!
以上内容欢迎评论,欢迎指正。