任意输入 N 个整数,请用选择排序、堆排序和冒泡排序算法对输入的任意 N 个数进 行有序排列,输出排序结果,并比较三种算法的时间复杂度
时间: 2024-05-02 07:17:46 浏览: 72
选择排序算法:
```python
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
```
堆排序算法:
```python
def heapify(arr, n, i):
largest = i
l = 2*i + 1
r = 2*i + 2
if l < n and arr[l] > arr[largest]:
largest = l
if r < n and arr[r] > arr[largest]:
largest = r
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
for i in range(n//2 - 1, -1, -1):
heapify(arr, n, i)
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i]
heapify(arr, i, 0)
return arr
```
冒泡排序算法:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
```
时间复杂度比较:
选择排序算法的时间复杂度为 $O(n^2)$,堆排序算法的时间复杂度为 $O(n\log n)$,冒泡排序算法的时间复杂度为 $O(n^2)$。因此,在处理大量数据时,堆排序算法是最优的选择,而选择排序算法和冒泡排序算法则适用于处理较小的数据。
阅读全文