排序理念比较:
归并排序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
分治算法,分为两个部分,两个部分做同样的事情。
认识你是我们的缘分,同学,等等,学习人工智能,记得关注我。
微信扫一扫
关注该公众号
《湾区人工智能》