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

版权声明:可以胡乱转载。 https://blog.csdn.net/hunyxv/article/details/75433768
import time


def 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 list

list = [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()                         # 内置函数sort
print(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-05

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/hunyxv/article/details/75433768