时间复杂度是程序运行的时间,也可以说是次数;
空间复杂度是程序占用的空间;6.归并排序
时间复杂度的计算:
二分查找/快排/归并,有一个共同的特点,就是将数据分为2堆。 2t = n => t = log2(n) 快排和归并每一次都要比较n次,所以时间复杂度= n*log2(n) 归并比较:只需要接着前一个数字比较就行,每一层总共比较n次。 快排比较:每一层总共和n个数字进行比较。
# coding: utf-8def MergeSort(lists): if len(lists) <= 1: return lists num = int( len(lists)/2 ) # 从中间,进行数据的拆分, 递归的返回数据进行迭代排序 left = MergeSort(lists[:num]) right = MergeSort(lists[num:]) print left print "*"*20 print right print "_"*20 return Merge(left, right)def Merge(left,right): r, l=0, 0 result=[] while l