快速排序算法的实现。任意输入20个整数,对这20个整数进行快速排序。要求使用末元素作为划分基准
时间: 2024-05-05 17:17:30 浏览: 83
快速排序(Quick Sort)是一种常用的排序算法,其基本思想是通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字都比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。下面是使用末元素作为划分基准的快速排序算法实现:
```python
def partition(arr, low, high):
pivot = arr[high] # 选择末元素作为划分基准
i = low - 1 # i表示小于等于pivot的元素的最后一个位置
for j in range(low, high):
if arr[j] <= pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i] # 交换arr[i]和arr[j]
arr[i+1], arr[high] = arr[high], arr[i+1] # 将pivot放到正确的位置
return i+1
def quick_sort(arr, low, high):
if low < high:
pi = partition(arr, low, high) # 按照划分基准将数组划分成两部分
quick_sort(arr, low, pi-1) # 递归排序左半部分
quick_sort(arr, pi+1, high) # 递归排序右半部分
# 测试代码
arr = [3, 5, 1, 8, 4, 9, 2, 7, 6, 0, 11, 13, 15, 17, 19, 18, 16, 14, 12, 10]
quick_sort(arr, 0, len(arr)-1)
print(arr)
```
输出结果为:
```
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
```
该算法的时间复杂度为O(nlogn),空间复杂度为O(logn)。虽然快速排序是一种非常高效的排序算法,但是在某些情况下会出现最坏情况,即每次划分只能将数组分成一个元素和剩余元素两部分,此时时间复杂度会退化到O(n^2)。因此,在实际应用中需要对快速排序进行优化,比如随机选择划分基准、三数取中法等。
阅读全文