快速排序

        快速排序可以看成对冒泡排序的一种改进。基本思想是:通过一趟排序将待排序列分为两部分,其中一部分的值均比另一部分的值要小,然后分别对这两部分继续进行排序。

        算法过程举例说明如下,假设输入为:

8149635270

        (1) 用三数中值分割法取一个pivot。从头、中间、尾取3个数分别为8, 6, 0, 中值为6,即选6为pivot。

        (2) 将序列分割为{小于6的数}, 6, {大于6的数}三部分

        将pivot与最后的元素交换使得枢纽元离开要分割的数据段。

8149035276
i






jpivot

        向右移动i直到指向的值大于pivot,向左移动j直到指向的值小于pivot。如果i在j的左边,则将这两个元素互换。

2149035876
i





j
pivot
        重复该过程直到i与j彼此交错为止。

        最后,将pivot与i所指的元素交换。

        (3) 分别对{小于pivot部分}和{大于pivot部分}进行第(2)步的分割。

        这个明显是递归了,递归要注意终止条件。

        如果移动i, j的过程中遇到了等于pivot的值怎么办?最好的选择是让i和j停止移动,否则运行时间将可能达到O(N^2)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值