快速排序

快速排序,自己简单理解:就是把大的放右边,小的放左边。(如果是从大到小排序的话)

*拿到一组数据假设int[] arr = [6,5,9,1,8,2,7] 现在我们给它从大到小排序

*把数组的第一个元素作为 基准元素(据说正规的是数组中随机选取一个数作为基准元素)也就是6

*基准元素可以简单理解成我们拿它作比较的元素。

*然后我们左右开弓往中间走,(记住不是"同时"开工,而是一边完成特定操作之后,"等着"另一边)


*第一步:从右边往中间找小于基准数的数放到基准的位置上

*所以第一步结束后是这样的:

*          [2,5,9,1,8,(),7]   注意此时我们不是把基准数放到2的位置

*第二步:第二步是基于第一步的,从左边往右边找大于基准数的数放到刚刚我们找到的那个 数字2所在的位置,也就是 数字9

*第二步后的结果:

*          [2,5,(),1,8,9,7]

*第三步:右边接着往左走,往左找小于基准数的数找到数字1,然后把 数字1放到之前 数字9的位置中去

*第三步结果:[2,5,1,(),8,9,7]

*第四步:右边的这一轮结束了,轮到左边开始动了,左边的往右挪一个,发现和右边的位置“碰头了”也就是left == right了,这时,重要的来了,我们把基准数放到两者交汇的这个位置

*          [2,5,1,6,8,9,7],此时第一轮结束.

*

*新一轮:接着再对上一轮产生的数组做同样的事情。


java代码实现:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容