快速排序法python
时间: 2023-11-04 10:57:15 浏览: 96
快速排序是一种常用的排序算法,它的基本思想是通过分治的策略将一个数组分成两个子数组,然后递归地对子数组进行排序。
下面是使用Python实现快速排序的示例代码:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 示例
arr = [5, 3, 8, 4, 2]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
输出结果为:[2, 3, 4, 5, 8]
相关问题
双边快速排序法python
双边快速排序是一种优化版的快速排序算法,它试图减少不必要的元素交换,提高排序效率。相比于传统的快速排序,它在数组两端选择两个基准值,然后将数组分为三部分:小于第一个基准、介于两者之间和大于第二个基准的部分。这样可以避免处理大量相等元素时的额外比较。
以下是双边快速排序的一个简单Python实现:
```python
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot1, pivot2 = arr[0], arr[-1]
lows = [x for x in arr[1:-1] if x < pivot1]
highs = [x for x in arr[1:-1] if x > pivot2]
equal = [x for x in arr[1:-1] if x >= pivot1 and x <= pivot2]
return quicksort(lows) + equal + [pivot1] + quicksort(highs)
# 示例
arr = [5, 3, 7, 2, 9, 1, 8, 6, 4]
sorted_arr = quicksort(arr)
print(sorted_arr)
快速排序递归python
### Python 实现快速排序递归算法
#### 快速排序的概念
快速排序是一种高效的排序算法,采用分治法策略。该算法通过选择一个'基准'元素将数组分割成两部分,一部分小于基准值,另一部分大于等于基准值。接着分别对这两部分继续执行相同的操作直到整个序列有序。
#### 代码实现
下面是一个基于上述原理的Python版本快速排序递归实现:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[len(arr) // 2] # 选取中间位置作为基准值
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# 测试例子
arr = [3,6,8,10,1,2,1]
print("原始列表:", arr)
sorted_arr = quick_sort(arr)
print("排序后的列表:", sorted_arr)
```
此段程序定义了一个名为`quick_sort` 的函数用于接收待排序列表并返回已排序的结果。当输入为空或仅含单个元素时直接返回原列表;否则取其中间项作比较标准(pivot),再利用列表推导式创建三个子集——左侧(所有比pivot小者)、中部(与pivot相等者)以及右侧(所有比pivot大者),最后依次调用自身完成最终结果拼接[^1]。
阅读全文