快速排序是个人认为到现在为止有点思考的算法。实现方法很多,但是从本质上来说是一样的(这里的排序都是按由小到大排序)。
确定一个基数,比基数小的放基数的左边,比基数大的放基数的右边,然后对左右在进行递归。
下面说下思路:
我就不画图了,以后能看懂就看懂。看不懂自己百度去
比如给定一个数组[101,34,119,1,2,1000,-1]
假设数组最左边的为base(101)
然后指定两个指针,分别指向left(101),right(-1)
左边的指针向右移动
右边的指针向左移动
也就是两个指针往中间靠拢
右边指针先来
如果发现某一个数比base大,就停下来,比如119就比base大,left指到119时就听下来
然后左边指针开始动,指到比base小的数字也停下来,比如-1比base小,这时候就停下来。
当两个指针都停下来的时候,交换这两个指针对应的数字
当两个指针重合的时候
重合的这个地方变为与left交换,然后继续左右递归
这里有个地方要注意,基数在左的话,一定要从右边先开始,要不然要出问题的
排序算法——快速排序
最新推荐文章于 2023-01-15 10:06:57 发布