快速排序实现

快速排序实现的前提有两个:

1、基线条件

2、归纳条件

现在来具体解释一个这两个条件

基线条件:排序说白了就是比较数的大小,比较的时候至少有两个数吧!(因为一个数是不能比较的,就像比较好与坏,也要有个对象吧!)基线的意思就是这个标准,例如:基线是5,你可以拿1与5比较,1比5小,10与5比较,10比5大,这就是基线。

归纳条件:可以从这个字面意思来分析,需要借助于上面这个名词,基线,归纳就是归档,如基线是5,[3,2,1,4 ]这些都比5小,把它们归并在一起,[8,9,7,6]这些比5大,把它们归并在一起

当然,有了这两个还不够,为什么呢!因为还差一个最重要的概念-----递归,想一想,如果你只是进行一次操作,在大多数情况下就不可能完成排序的(也有特殊情况,这个概率还是比较小的)在这个地方,大家要仔细的想一个,或者当你看到这的时候,不妨闭上眼睛,想30秒,什么是递归(如果你比较了解的话,此处略过)如果你此时已经明白,那就好办了,现在你按照这个思路,把比基线小的做一次排序,再把比基线大的做一个排序,........如此反复,对,你已经完成了整个流程,现在让我们用代码来实现

此处使用python来实现:当然其它语言也可以,最重要的是思路

def quick_sort(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i > pivot]
        return quick_sort(less) + [pivot] + quick_sort(greater)

if __name__ == "__main__":
    array = [23,45,10,23,89,120]
    re = quick_sort(array)
    


>> [10, 23, 23, 45, 89, 120]

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值