题解 | #排序#

排序

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,也就是这个元素的最终位置返回即可。
全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
无实习如何秋招上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务