java排序算法(快速排序)

发布时间:2019-11-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了java排序算法(快速排序)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

快速排序

思路

  • 数组中寻一中间数,将比中间数小的放在左边,将比中间数大的放在右边
    从左边开始找,找到比中间数大的,记住,从右边开始找,找到比中间数小的,然后交换两边
    然后在左边再寻一中间数,同坐上面的事,右边也一样,然后循环

实现

数组:[2,6,3,6,5,9,1]
输出:[1 2 3 5 6 6 9 ]

PRivate static void paixu(int[] arrs, int h, int e) {         int head =h;         int end = e;          int x=(h+e)/2;//中间值的位置          while (h <= e){//两个指针还没有遇到              while (arrs[x]>arrs[h]){//从左边开始找,找到比中间值大的数                 h++;             }              while (arrs[x]< arrs[e]){//从右边开始查找,找到比中间值小的                 e--;             }             //交换值             int m;             m = arrs[h];             arrs[h] = arrs[e];             arrs[e] = m;        //2,6,3,6,5,9,1             h++;                //2,1,3,6,5,9,6             e--;                //2,1,3,5,6,9,6          }         //递归查询左右两边         if (head < e){         paixu(arrs,head,e);}         if (end > h){         paixu(arrs,h,end);}     }

为什么会有h++,e--呢
跟一下代码
输入数组[2,6,3,6,5,9,1]
第一次运行
中间位置是3,值是6
左边是0,右边是6

java排序算法(快速排序)

往下执行

java排序算法(快速排序)

h=1,e=6
数组变成[2,1,3,6,5,9,6]

java排序算法(快速排序)

执行加减操作 h=2,e=5;然后开启第二轮的执行

假如不进行加减操作,
继续执行的话,左边继续判断,当查询到6的时候停止,
右边查询,查询到6的时候停止,然后交换,6和6交换,然后再次开启循环,就会死循环,

当执行加减操作之后,再次判断的时候,就会从交换数据之后的索引开始判断,就不会再次判断了,

脚本宝典总结

以上是脚本宝典为你收集整理的java排序算法(快速排序)全部内容,希望文章能够帮你解决java排序算法(快速排序)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。