sorted和list.sort耗时分析:由输入获得 10 个整数并从小到大排序
题目要求:
由输入获得 10 个整数,然后对它们排序后,再从小到大打印出来。
拆解:
- 输入数据
- 排序
- 输出数据
print('请输入10个整数:')
data = []
for i in range(10):
a = int(input(f'第{i+1}个:'))
data.append(a)
print('输入的数据是:',data)
data.sort()
print('排序后为:',data)
自己写排序算法,并和内置函数sorted()
、list.sort()
比较算法耗时
import random
import time
# 自己写排序算法
def my_sort(data):
for i in range(len(data)-1):
for j in range(1, len(data)):
if data[i] > data[j]:
data[i], data[j] = data[j], data[i]
return data
# 对比my_sort()、sorted()、list.sort()耗时
data = [random.randint(1,10000) for i in range(10000)]
# sorted()耗时
start = time.time()
sorted(data)
time.sleep(1)
end = time.time()
print('sorted()耗时:',end-start)
data = [random.randint(1,10000) for i in range(10000)]
# my_sort()耗时
start = time.time()
my_sort(data)
time.sleep(1)
end = time.time()
print('my_sort()耗时:',end-start)
data = [random.randint(1,10000) for i in range(10000)]
# list.sort()耗时
start = time.time()
data.sort()
time.sleep(1)
end = time.time()
print('list.sort()耗时:',end-start)
运行结果如下:
感觉自己写的和内置的函数耗时隔了上百倍,所以肯定有需要优化的地方。