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

本文对比了归并排序与快速排序的排序理念,归并排序通过分治和合并操作实现稳定排序,而快速排序依赖于随机划分达到平均O(nlogn)效率,但不稳定。介绍了它们的优缺点、稳定性及复杂度,并提供了Python代码示例。
摘要由CSDN通过智能技术生成

排序理念比较:

归并排序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

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

abc368cb340a44249d1d65284b4345a8.jpg

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

微信扫一扫

关注该公众号

《湾区人工智能》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值