生成代码(A数组中存储500个2000以内的随机整数,完成以下操作: (1)对A数组中的元素进行直接插入排序,显示排序所用时间; (2)对A数组中的元素进行希尔排序,显示排序所用时间; (3)对A数组中的元素进行起泡排序,显示排序所用时间; (4)对A数组中的元素进行快速排序,显示排序所用时间。)
时间: 2024-01-11 20:02:20 浏览: 53
以下是生成所需代码:
```python
import random
import time
# 生成随机整数
A = [random.randint(1, 2000) for i in range(500)]
# 直接插入排序
def insert_sort(array):
start = time.time()
for i in range(1, len(array)):
temp = array[i]
j = i - 1
while j >= 0 and array[j] > temp:
array[j + 1] = array[j]
j -= 1
array[j + 1] = temp
end = time.time()
print("直接插入排序所用时间:", end-start)
insert_sort(A)
# 希尔排序
def shell_sort(array):
start = time.time()
n = len(array)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = array[i]
j = i - gap
while j >= 0 and array[j] > temp:
array[j + gap] = array[j]
j -= gap
array[j + gap] = temp
gap //= 2
end = time.time()
print("希尔排序所用时间:", end-start)
shell_sort(A)
# 起泡排序
def bubble_sort(array):
start = time.time()
n = len(array)
for i in range(n):
flag = True
for j in range(n-i-1):
if array[j] > array[j+1]:
array[j], array[j+1] = array[j+1], array[j]
flag = False
if flag:
break
end = time.time()
print("起泡排序所用时间:", end-start)
bubble_sort(A)
# 快速排序
def quick_sort(array):
start = time.time()
if len(array) <= 1:
return array
pivot = array[len(array) // 2]
left = [x for x in array if x < pivot]
middle = [x for x in array if x == pivot]
right = [x for x in array if x > pivot]
end = time.time()
print("快速排序所用时间:", end-start)
quick_sort(A)
```
注意:以上代码仅供参考,实际运行效果可能因环境和数据集不同而有所差异。
阅读全文