快速排序和归并排序的区别,Python代码实现

排序理念比较:

 

归并排序merge sort思路:

归并排序中间劈一刀,两边再排序,然后把左右两个合并。就是先局部有序,再整体有序。

快速排序思路:

随便选择一个数字作为中间点,小于放在左边,大于放在右边。递归对左右两个部分排序。就是先整体有序,后局部有序

 

归并排序优缺点

优点:容易掌握,用处广泛。分治思想很重要

缺点:花费O(n)的额外空间,因为要合并两个数组,不可能在原地合并数组,必须要开辟新的空间来合并。所以这种算法败给了快速排序算法。

 

稳定性比较:

 

稳定就是同样的数字,比如两个1,排序前后两个1位置不变。

归并排序能够保证原来的顺序,很稳定。

快排不够稳定。
 

复杂度比较

 

时间复杂度:

复杂度都是nlogn,本质是有区别的。

快排的平均复杂度是nlogn,最坏会达到n平方的复杂度。每次都选择最左边的数字,导致左边只有一个数字,右边有其他数字。

归并排序复杂度最好,最坏,平均都是nlogn。是严格的nlogn复杂度。

空间复杂度:

快排空间复杂度是原地排序,不用额外空间呢。

归并排序需要额外的O(N)空间,因为要合并两个数组,不可能在原地合并数组,必须要开辟新的空间来合并

 

 

快速排序总结,Python版代码

https://blog.csdn.net/BTUJACK/article/details/84195993

 

归并排序Python代码

https://blog.csdn.net/BTUJACK/article/details/84197960

 

分治算法,分为两个部分,两个部分做同样的事情。


 

认识你是我们的缘分,同学,等等,学习人工智能,记得关注我。

 

微信扫一扫
关注该公众号

《湾区人工智能》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值