1、随机生成1万个整数,范围在0-10万之间,分别进行简单选择排序、快速排序(自行递归实现的)以及内置sort函数3种排序,打印出3种排序的运行时间。
In [32]:
import random
import math
def get_num():
num_list=[]
for i in range(0,30):
num_list.append(random.randint(0,100000))
return num_list
def sort_simple_selection(seq):
print("简单排序",end=', ')
print("时间复杂度:",len(seq)*len(seq))
for i in range(len(seq)-1):
min = i
for j in range(i+1, len(seq)):
if seq[j] < seq[min]:
min = j
seq[i], seq[min] = seq[min], seq[i]
return seq
def quick_sort(seq):
left_seq = []
right_seq = []
p=seq[0]
for number in seq[1:]:
if number <= p:
left_seq.append(number)
else:
right_seq.append(number)
if left_seq:
left_seq = quick_sort(left_seq)
if right_seq:
right_seq = quick_sort(right_seq)
return left_seq + [p] + right_seq
numbers=get_num()
print("随机数:",number)
simple_sorted_numbers=sort_simple_selection(numbers)
print(simple_sorted_numbers)
quick_sorted_numbers = quick_sort(numbers)
n=len(numbers)
time_complex=n*math.log(n,2)
print("快速排序, 时间复杂度:",time_complex)
print(quick_sorted_numbers)
print("内置函数")
print(sorted(numbers))