python实测对比冒泡排序、选择排序、插入排序、希尔排序

2019-11-13  本文已影响0人  pao哥
import time
import random

# 用于测试四种排序算法的性能
def time_test(func):
    start = time.time()
    for i in range(100):
        lst_p = [random.randint(-1000,1000) for i in range(1,1000)] 
        func(lst_p)
    end = time.time()
    print("%11s:%5f秒" % (func.__name__,(end-start)/100))

# 冒泡排序
def bubbleSort(lst):
    for i in range(1, len(lst)-1):
        sorted_sign = True
        for j in range(1, len(lst)-i+1):
            if lst[j-1] > lst[j]:
                lst[j-1], lst[j] = lst[j], lst[j-1]
                sorted_sign = False
        if sorted_sign:
            return       
     
# 选择排序
def selectSort(lst):
    for i in range(len(lst)-1):
        min_i = i
        for j in range(i+1, len(lst)):
            if lst[j] < lst[min_i]:
                min_i = j
        lst[min_i], lst[i] = lst[i], lst[min_i]
  
# 插入排序
def insertSort(lst):
    for i in range(1, len(lst)):
        for j in range(i,0,-1):
            if lst[j] < lst[j-1]:
                lst[j], lst[j-1] = lst[j-1], lst[j]
            else:
                break    
      
# 希尔排序
def shellSort(lst):
    n = len(lst)
    gap = n // 3
    while gap > 0:
        for i in range(gap, n):
            for j in range(i,0,-gap):
                if lst[j] < lst[j-gap]:
                    lst[j], lst[j-gap] = lst[j-gap], lst[j]
                else:
                    break
        gap //= 3


# 冒泡排序
time_test(bubbleSort)

# 选择排序
time_test(selectSort)

# 插入排序
time_test(insertSort)

# 希尔排序
time_test(shellSort)

运行时间对比
上一篇下一篇

猜你喜欢

热点阅读