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)
运行时间对比
网友评论