5. 选择排序问题(必做) (1) 编写选择排序程序。要求将选择排序写成函数。 (2)生成长度为N的伪随机序列,对伪随机序列进行插入排序。N=10000,30000,50000 (3)并计算排序耗费的时间。
时间: 2024-10-23 18:04:26 浏览: 10
ajax返回的json内容进行排序使用sort()方法实现
选择排序是一种简单的排序算法,它的工作原理是每次从未排序的部分找出最小(或最大)的元素,然后放到已排序部分的末尾。以下是选择排序的基本步骤:
(1)选择排序函数实现(Python示例):
```python
def selection_sort(arr):
n = len(arr)
for i in range(n):
# 找到剩余部分中的最小值索引
min_index = i
for j in range(i+1, n):
if arr[j] < arr[min_index]:
min_index = j
# 将找到的最小值与当前位置交换
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
# 调用函数
unsorted_list = [你的伪随机数列表] # 需要你自己生成长度为N的列表
sorted_list = selection_sort(unsorted_list)
```
**注意**:由于这里无法直接运行代码,你需要自行编写一个生成长度为N的伪随机数列表的函数。
(2)生成伪随机数并排序:
为了生成长度为N的伪随机数序列,你可以使用`random`模块,例如:
```python
import random
N_values = [10000, 30000, 50000]
for N in N_values:
unsorted_list = [random.randint(0, 100) for _ in range(N)] # 示例区间,根据需求调整
sorted_list = selection_sort(unsorted_list)
# 排序后的列表存储或处理
print(f"对于N={N},排序后的列表为:{sorted_list}")
```
(3)时间计算:
你可以使用Python的`timeit`模块来测量排序所需的时间,如下所示:
```python
from timeit import timeit
# 计算选择排序时间
sort_time = timeit(lambda: selection_sort(unsorted_list), number=1)
print(f"选择排序N={N}的数组耗时:{sort_time:.6f}秒")
```
记得替换`unsorted_list`为实际的排序前数组。这将给出每次排序操作的大致时间。
阅读全文