经典排序算法:归并排序(python)
2018-01-25 15:24
513 查看
原理:
归并排序也是采用分治法,它将待排序序列分为若干个子序列,先使每个子序列有序,然后再将已有有序子序列合并为整体有序序列。算法分为两步:递归和合并
(1)、递归:先把待排序数组以中点二分,接着把左边子数组继续二分,再把右边子数组继续二分,直到数组长度小于等于1,最后把左子数组和右子数组合并为有序的区间,合并步骤见(2)。
(2)、合并:比较左子数组a[i]和右子数组b[j]的元素,若a[i]
代码:
def MergeSort(Seq): if len(Seq) <= 1: return Seq mid = int(len(Seq)/2) left = MergeSort(Seq[:mid]) right = MergeSort(Seq[mid:]) return Merge(left, right) def Merge(left, right): result = [] i,j = 0,0 while i<len(left) and j<len(right): if left[i] <= right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result += left[i:] result += right[j:] return result # n = [4,12,7,9,1] n = [1,-2,4] n_sort = MergeSort(n) print(n_sort)
优点:
一般用于总体无序,但各子项相对有序的数列效果较好,为稳定排序算法。缺点:
归并排序中的合并操作花费的时间较大,影响整体算法的效率,尤其在大数据数组情况下。复杂度:
时间复杂度为O(nlogn);空间复杂度为O(n)相关文章推荐
- Python实现经典内部排序算法(归并排序)
- 漫谈经典排序算法:四、归并排序(合并排序)
- 经典排序算法--插入排序 希尔排序 归并排序
- Python练手之6种经典排序算法
- 基于python的七种经典排序算法
- 经典的排序算法--归并排序
- Python:经典排序算法实现
- 经典排序算法之归并排序
- python排序算法-冒泡排序,选择排序,直接插入排序,希尔排序,归并排序,快速排序,堆排序
- 经典排序算法学习笔记六——归并排序
- 小白学数据结构——四、排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
- 经典排序算法python回顾之一 交换排序
- 排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)
- 经典排序算法:堆排序(python)
- python实现经典排序算法
- Python练手之6种经典排序算法
- 排序算法(python)-归并排序
- 基于python的七种经典排序算法
- 排序算法总结(归并排序、快速排序)(python实现)
- 排序算法Python(冒泡、选择、快速、插入、希尔、归并排序)