1.实现合并排序算法。要排序的整型数组元素可以用随机数生成器生成,运行程序,分别记录对十万,一百万,一千万,五千万个数据排序所用的时间,列出表格显示统计出来的时间。并单独显示一个100个数据的排序结果。
时间: 2024-03-22 09:42:41 浏览: 94
用蛮力法实现选择排序,冒泡排序程序;用减治法实现插入排序;分治法应用-快排,合并排序,0-1背包问题;Prim算法求最小生成树。伪代码以及java代码实现
好的,我可以帮您实现合并排序算法,并记录运行时间。以下是Python代码实现:
```python
import random
import time
# 合并排序函数
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
# 合并两个有序数组
def merge(left, right):
l, r = 0, 0
res = []
while l < len(left) and r < len(right):
if left[l] <= right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
res += left[l:]
res += right[r:]
return res
# 生成随机数数组
def generate_arr(size):
return [random.randint(0, 100000) for _ in range(size)]
# 测试排序时间
def test_merge_sort(size):
arr = generate_arr(size)
start = time.time()
res = merge_sort(arr)
end = time.time()
print(f"排序 {size} 个数据所用时间:{end - start:.5f} 秒")
return res
# 测试排序结果
def test_result():
arr = generate_arr(100)
print(f"原始数组:{arr}")
print(f"排序后数组:{merge_sort(arr)}")
# 测试代码
test_result()
test_merge_sort(100000)
test_merge_sort(1000000)
test_merge_sort(10000000)
test_merge_sort(50000000)
```
代码中,`merge_sort` 函数实现了合并排序算法,`generate_arr` 函数用于生成随机数数组,`test_merge_sort` 函数用于测试排序时间,并打印出所用时间,`test_result` 函数用于测试排序结果,将原始数组和排序后数组打印出来。
您可以将代码保存为 `merge_sort.py` 文件,然后在命令行中运行 `python merge_sort.py` 来测试不同数量数据的排序时间,并查看排序结果。
阅读全文