题解 | #排序#

排序

http://www.nowcoder.com/practice/2baf799ea0594abd974d37139de27896

解题思路:
本题主要用的方法是快速排序。
首先快速排序最核心的一点是partition操作,指的是通过一次partition操作可以将数组中第一个元素放在一个最终排序后的位置,即它的左边全部小于它,它的右边全部大于它。
我们可以通过划定边界的方法来完成,用l 来标识小于等于边界,即l之前的元素全部小于这个元素。r标识大于边界,r右边的元素全部大于这个元素。
那么只需要通过l++来遍历整个数组,给他们所有元素安排到对应的位置上就行。 while(l<=r) 为什么要加等于,因为l 和 r 表示的都是这个元素还没比较呢。
我们把第一个元素定义为target,当前遍历的元素小于target,那么l ++  当前遍历元素大于target,那么 swap(arr,l r--)。
全部完成之后 swap(arr , init , l-1)  注意要保存一下第一个元素的位置
最后把l-1,也就是这个元素的最终位置返回即可。
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务