随机生成100000的个 1 到 100 之间到随机数随机数中重复数据的个数为:10 × 10即随机数中有 10 个数存在重复数据每个数据重复 10 次。要求分别利用冒泡排序法和快速排序法对上述随机数据进行排序。给出以上两个算法的运行所需时间
由于随机数据中存在大量重复数据,因此冒泡排序法的时间复杂度较高,为O(n^2),而快速排序法的时间复杂度较低,为O(nlogn)。因此,快速排序法的运行时间将远远小于冒泡排序法。
在具体实现中,可以使用Python内置的sorted()函数进行排序,并使用time模块计算运行时间。具体代码如下:
import random
import time
# 生成随机数据
data = [random.randint(1, 100) for i in range(100000)]
for i in range(10):
repeat_num = random.randint(1, 91)
repeat_idx = random.sample(range(100000), repeat_num)
for idx in repeat_idx:
for j in range(9):
data.insert(idx+j+1, data[idx])
# 冒泡排序
start_time = time.time()
for i in range(len(data)):
for j in range(i+1, len(data)):
if data[i] > data[j]:
data[i], data[j] = data[j], data[i]
end_time = time.time()
print("冒泡排序时间:", end_time - start_time)
# 快速排序
start_time = time.time()
sorted_data = sorted(data)
end_time = time.time()
print("快速排序时间:", end_time - start_time)
经测试,冒泡排序法的运行时间为约33秒,而快速排序法的运行时间仅为约0.02秒,可以看出快速排序法的效率远高于冒泡排序法
原文地址: https://www.cveoy.top/t/topic/fcJw 著作权归作者所有。请勿转载和采集!