网站首页 > java教程 正文
快速排序是一种非常高效的排序算法,它的实现,增大了记录和比较和移动的距离,从而减少总的比较此时和移动次数。采用分而治之的思想,将一个大的问题拆成一个小的问题,小的问题拆成更小的问题。
public static void quickSort(int []array,int low,int high) {
if(low>=high){
return;
}
int left=low;
int right=high;
int base = array[low];
while (left!=right) {//从后面开始检索 遇到比基准数小的就停下,遇到比基准数大于等于的就继续检索
while (array[right]>=base&&left<right) {//left小于right 防止越界 比如数组内所有元素都比base小就会一路走下去
right--;
}
while (array[left] <= base&&left<right) {
left++;
}
int temp=array[left];
array[left]=array[right];
array[right]=temp;
}
//交换基准值和相遇位置的值
array[low]=array[left];//相遇的值一定小于基准值
array[left]=base;
quickSort(array,low,left-1);
quickSort(array,left+1,high);
}
快速排序
时间复杂度最好情况是都能分割成较完美的两部分 O(nlog(n)),最坏情况是数组是有序的每次分割只有一边 O(n^2)
空间复杂度为O(nlog(n)) 稳定性:不稳定
快速排序再最坏的情况下可以优化,即优化基准值
三数取中法即low mid high 取中间大小的数字为基准值
猜你喜欢
- 2024-10-09 一遍记住 8 种排序算法与 Java 代码实现
- 2024-10-09 java程序员必知的八大排序(java编程排序算法实现)
- 2024-10-09 Java实现堆排序(java堆排序算法代码)
- 2024-10-09 插入排序算法,就这么简单,还学不会算我输
- 2024-10-09 程序员必知的十大基础实用算法之-快速排序算法
- 2024-10-09 【数据结构与算法】十大经典排序算法-快速排序
- 2024-10-09 经常用到的的排序(快速排序和归并排序)简单的计算机算法学习
- 2024-10-09 排序算法——快排(快速排序算法实例讲解)
- 2024-10-09 七种基于比较的排序,基于Java实现,收藏一下?
- 2024-10-09 十大经典排序算法动画与解析,看我就够了!(配代码完全版)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)