实现快速排序算法,基准元素随机选取。要排序的整型数组元素可以用随机数生成器生成,运行程序,记录分别对十万,一百万,一千万,五千万个数据排序所用的时间,列出表格显示统计出来的时间。并单独显示一个100个数据的排序结果。
时间: 2024-03-15 20:44:54 浏览: 111
好的,我会帮你解答这个问题。
快速排序算法是一种高效的排序算法,其基本思想是通过一趟排序将待排序列分成两个部分,其中一部分的所有元素都比另一部分的元素小,然后再按照同样的方法递归地排序这两部分,直到整个序列有序。
在实现快速排序算法时,我们需要选取一个基准元素,通常情况下我们选择第一个元素或最后一个元素作为基准元素。但是这样容易造成最坏情况的出现,即时间复杂度为 $O(n^2)$。为了避免这种情况,我们可以随机选择一个元素作为基准元素。
下面是使用 Python 语言实现快速排序算法的代码:
```python
import random
import time
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = random.choice(arr)
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 生成随机数
def generate_random_numbers(n):
return [random.randint(-10000, 10000) for _ in range(n)]
# 测试程序运行时间
def test_sort_time(n):
arr = generate_random_numbers(n)
start_time = time.time()
sorted_arr = quick_sort(arr)
end_time = time.time()
print(f"排序 {n} 个数所用时间为:{end_time - start_time} 秒")
return sorted_arr
# 测试程序
if __name__ == "__main__":
# 分别对十万、一百万、一千万、五千万个数据进行排序
test_sort_time(100000)
test_sort_time(1000000)
test_sort_time(10000000)
test_sort_time(50000000)
# 对100个数进行排序并输出结果
arr = generate_random_numbers(100)
print("排序前:", arr)
sorted_arr = quick_sort(arr)
print("排序后:", sorted_arr)
```
在上面的代码中,我们使用了 Python 的 random 模块来生成随机数,使用 time 模块来记录程序运行时间。generate_random_numbers 函数用于生成随机数数组,test_sort_time 函数用于测试程序运行时间,quick_sort 函数是快速排序算法的实现,最后我们在程序末尾对100个数进行排序并输出结果。
你可以将以上代码保存为一个 py 文件并运行,程序将会输出排序所用的时间以及对100个数进行排序的结果。
阅读全文