python 归并排序 与 快速排序 速度对比

来源:互联网 发布:岳不群 知乎 编辑:程序博客网 时间:2024/06/08 13:52
import timedef merge(list,first,mid,last):    left = list[first:mid+1]    right = list[mid+1:last+1]    while left != [] and right !=[]:        if left[0] < right[0]:            list[first] = left.pop(0)        else:            list[first] = right.pop(0)        first +=1    if left != []:        list[first:last+1] = left[:]    elif right!= []:        list[first:last+1] = right[:]def sort(first,last):              # 归并排序    global list    mid = (last + first)//2    if first < last:        sort(first,mid)        sort(mid+1,last)        merge(list,first,mid,last)def qsort(list):                    # 快速排序    l = list.pop()    x = []    y = []    while list:        m = list.pop()        if m < l:            x.append(m)        else:            y.append(m)    if x:        qsort(x)        list.extend(x)    list.append(l)    if y:        qsort(y)        list.extend(y)    return listlist = [2,4,6,8,1,3,6,7,9,11,17,13,12]T = time.time()sort(0,len(list))                   # 归并排序print(list,time.time()-T)print('-'*30)list = [2,4,6,8,1,3,6,7,9,11,17,13,12]  # 重置列表   T = time.time()list.sort()                         # 内置函数sortprint(list,time.time()-T)print('-'*30)list = [2,4,6,8,1,3,6,7,9,11,17,13,12]T = time.time()qsort(list)                         # 快速排序print(list,time.time()-T)

时间对比:

[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 5.3882598876953125e-05------------------------------[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 3.0994415283203125e-06------------------------------[1, 2, 3, 4, 6, 6, 7, 8, 9, 11, 12, 13, 17] 4.076957702636719e-05Process finished with exit code 0
原创粉丝点击