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))


随机数: [0, 0, 1, 2, 4, 7, 12, 13, 18, 20]
简单排序, 时间复杂度: 900
[605, 1887, 1953, 6530, 6666, 20734, 23697, 30133, 30453, 36896, 42205, 43284, 46157, 50090, 50308, 54308, 55106, 55655, 57762, 60225, 61866, 62859, 63513, 65023, 65745, 68401, 76702, 79204, 88076, 89178]
快速排序, 时间复杂度: 147.20671786825557
[605, 1887, 1953, 6530, 6666, 20734, 23697, 30133, 30453, 36896, 42205, 43284, 46157, 50090, 50308, 54308, 55106, 55655, 57762, 60225, 61866, 62859, 63513, 65023, 65745, 68401, 76702, 79204, 88076, 89178]
内置函数
[605, 1887, 1953, 6530, 6666, 20734, 23697, 30133, 30453, 36896, 42205, 43284, 46157, 50090, 50308, 54308, 55106, 55655, 57762, 60225, 61866, 62859, 63513, 65023, 65745, 68401, 76702, 79204, 88076, 89178]