题解 | #排序#

排序

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

相关推荐

码农索隆:竞争压力小,就你一个不用卷
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
一表renzha:手写数字识别就是一个作业而已
点赞 评论 收藏
分享
给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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