
java实现快速排序
如果当前基准元素大于右边的元素,交换它们的位置。 如果当前基准元素小于左边的元素,交换它们的位置。 如此反复循环,直到无法再进行交换。 一趟排序完成后,左边的元素均小于基准,右边的元素均大于基准。 再对左右两边的子数组分别递归排序。
发布日期:2021-05-26 20:33:06
浏览次数:22
分类:精选文章
本文共 1124 字,大约阅读时间需要 3 分钟。
快速排序的基本思想
快速排序是一种高效的分治排序算法,其核心思想是通过一趟排序将数组分成两部分:一部分元素小于中轴值,另一部分元素大于中轴值,分别递归排序这两部分,直至整个数组有序。
分治法的步骤解释
把整个数组看作一组,选择中间的元素作为基准(通常选择第一个或最后一个元素)。
代码实现
public int getMiddle(Integer[] list, int low, int high) { int tmp = list[low]; // 选择左边第一个作为基准 while (low < high) { while (low < high && list[high] > tmp) { high--; } list[low] = list[high]; // 将右边小的移到左边 while (low < high && list[low] < tmp) { low++; } list[high] = list[low]; // 将左边大的移到右边 } list[low] = tmp; // 基准元素移到正确位置 return low;}public void _quickSort(Integer[] list, int low, int high) { if (low < high) { int middle = getMiddle(list, low, high); // 将数组分成两部分 _quickSort(list, low, middle - 1); // 对左边子数组递归排序 _quickSort(list, middle + 1, high); // 对右边子数组递归排序 }}
测试用例与结果
输入数组:34, 3, 53, 2, 23, 7, 14, 10排序结果:2, 3, 7, 10, 14, 23, 34, 53
分治排序的工作原理
通过不断地选择并交换元素,最终将较大的元素移到数组的一端,较小的元素移到另一端。每次选择的基准元素为中间元素,最终实现全数组的有序。这种方法的时间复杂度为O(n log n),在大多数情况下性能优于其他排序算法。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月25日 22时27分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
一些技术博客
2019-03-13
第01问:MySQL 一次 insert 刷几次盘?
2019-03-13
优先级队列2
2019-03-13
TiKV 源码解析系列文章(十三)MVCC 数据读取
2019-03-13
Android 开发常用的工具类(更新ing)
2019-03-13
初次安装webpack之后,提示安装webpack-cli
2019-03-13
Hbase压力测试
2019-03-14
C#中的类、方法和属性
2019-03-14
Python爬虫训练:爬取酷燃网视频数据
2019-03-14
Python数据分析入门(十九):绘制散点图
2019-03-14
Callable中call方法和Runnable中run方法的区别
2019-03-14
Linux yum提示Loaded plugins错误的解决方法
2019-03-14
xshell解决文本粘贴格式错误
2019-03-14
JAVA BigInteger和BigDecimal类常用方式
2019-03-14
机器学习全教程
2019-03-14
idea在连接mysql数据库时区错误
2019-03-14
工程经济—建设工程定额
2019-03-14
1Z204050、施工质量不合格的处理
2019-03-14