快速排序,自己简单理解:就是把大的放右边,小的放左边。(如果是从大到小排序的话)
*拿到一组数据假设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代码实现: