上机题目: • 请写一个快速排序的函数,一个冒泡排序的函数 • 输入: – 先输入一个数表示整数数组大小,再输入这个数组的所有元素 • 输出: – 由冒泡排序排好的数组 – 冒泡排序所用的时间 – 由快速排序排好的数组 – 快速排序所用的时间
时间: 2024-12-19 08:19:29 浏览: 16
这是一个编程练习题目,要求编写两个排序算法的实现:快速排序和冒泡排序,并在给定输入数据的情况下,分别计算它们的运行时间。
**Python 示例代码**:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr, 0
pivot = arr[len(arr) // 2]
left, middle, right = [], [], []
for num in arr:
if num < pivot:
left.append(num)
elif num == pivot:
middle.append(num)
else:
right.append(num)
time_taken = len(arr) * (len(arr) - 1) / 2 # 估算平均时间复杂度为O(n^2),这里仅作为示例
sorted_left, _ = quick_sort(left)
sorted_right, _ = quick_sort(right)
return sorted_left + [pivot] + sorted_right, time_taken
def bubble_sort(arr):
n = len(arr)
time_taken = 0
for i in range(n):
for j in range(0, n-i-1):
time_taken += 1 # 这里也仅做简单计数,实际时间会更复杂
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr, time_taken
# 主程序部分
size = int(input("请输入数组大小: "))
arr = list(map(int, input("请输入数组元素: ").split()))
bubble_sorted_arr, bubble_time = bubble_sort(arr.copy())
quick_sorted_arr, quick_time = quick_sort(arr.copy())
print(f"冒泡排序后的数组: {bubble_sorted_arr}")
print(f"冒泡排序用时: {bubble_time} 次比较")
print(f"快速排序后的数组: {quick_sorted_arr}")
print(f"快速排序用时: {quick_time} 秒 (假设递归调用次数)")
```
**注意事项**:
- 实际计算运行时间时,通常需要引入计时模块如`timeit`,并记录每个排序过程的总执行时间,而不是简单的乘法估算。
- 代码中的冒泡排序和快速排序都只做了简单的计数,用于演示如何统计步骤次数,而在实际应用中会有更为精确的时间测量方法。
阅读全文