1.实现合并排序算法。要排序的整型数组元素可以用随机数生成器生成,运行程序,分别记录对十万,一百万,一千万,五千万个数据排序所用的时间,列出表格显示统计出来的时间。并单独显示一个100个数据的排序结果。
时间: 2024-03-24 12:37:25 浏览: 112
编程实现希尔、快速、堆、归并排序算法,随机产生10000个随机数存入磁盘文件,读取,并将不同排序方法的结果存入文件中(含报告)
5星 · 资源好评率100%
好的,这是一个非常经典的排序算法,我可以帮您实现合并排序算法,并且进行测试。以下是实现合并排序算法的代码(Python实现):
```python
import random
import time
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
i = j = k = 0
while i < len(left_half) and j < len(right_half):
if left_half[i] < right_half[j]:
arr[k] = left_half[i]
i += 1
else:
arr[k] = right_half[j]
j += 1
k += 1
while i < len(left_half):
arr[k] = left_half[i]
i += 1
k += 1
while j < len(right_half):
arr[k] = right_half[j]
j += 1
k += 1
def generate_random_array(n):
return [random.randint(0, 1000000) for _ in range(n)]
if __name__ == '__main__':
n_values = [100000, 1000000, 10000000, 50000000]
for n in n_values:
arr = generate_random_array(n)
start = time.time()
merge_sort(arr)
end = time.time()
print(f"Sorting {n} values took {end - start:.2f} seconds.")
arr = generate_random_array(100)
print(f"Unsorted array: {arr}")
merge_sort(arr)
print(f"Sorted array: {arr}")
```
代码中 `merge_sort` 函数实现了合并排序算法,通过 `generate_random_array` 函数可以生成随机的整型数组,最后通过 `time` 模块计算出程序运行的时间。我们分别对输入大小为十万、一百万、一千万和五千万的随机数组进行排序,并输出程序运行时间。同时,我们也对一个大小为100的随机数组进行排序,并输出排序结果。
注意,由于合并排序算法的时间复杂度为 $O(n\log n)$,随着输入大小的增加,程序的运行时间增长速度比较慢,但是对于非常大的输入,程序的运行时间也会非常长。因此,如果您的电脑配置较低,可能需要等待一段时间才能看到程序的输出结果。
阅读全文