数据结构快速排序算法全部
时间: 2024-09-06 17:06:41 浏览: 39
c语言 数据结构 快速排序算法
快速排序算法是一种高效的排序算法,由C. A. R. Hoare在1960年提出。它使用分治策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。其基本步骤如下:
1. 选择基准值(Pivot):从数组中选择一个元素作为基准值,可以是第一个元素、最后一个元素、中间元素或者随机元素等。
2. 分区操作(Partitioning):重新排列数组,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面。在这个分区结束之后,该基准就处于数列的中间位置。
3. 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
4. 合并子序列:由于原序列已经根据基准值划分成独立的两部分,并且已经排序,合并操作其实已经隐式完成。
快速排序的平均时间复杂度为O(n log n),最坏情况下为O(n^2)(当输入序列已经有序时)。快速排序的优点是平均性能好,且内部循环可以被高效实现,所以在大多数实际情况中比其他复杂度为O(n log n)的排序算法都要快。但是它的最坏情况性能较差,可以通过随机选择基准值等策略来避免。
以下是快速排序的一个简单实现(以第一个元素作为基准值):
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
# 示例使用
array = [3, 6, 8, 10, 1, 2, 1]
sorted_array = quick_sort(array)
print(sorted_array)
```
阅读全文