用python写一个快速排序的程序
时间: 2023-09-08 12:05:06 浏览: 96
### 回答1:
下面是一个使用 Python 语言的快速排序的程序:
```
def quick_sort(array):
if len(array) < 2:
return array
else:
pivot = array[0]
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
print(quick_sort([10, 5, 2, 3]))
```
程序的流程是:
1. 如果数组的长度小于 2,那么就直接返回这个数组;
2. 否则,选取数组的第一个元素作为基准值 pivot;
3. 创建两个列表 less 和 greater,分别存储数组中小于等于 pivot 的值和大于 pivot 的值;
4. 对 less 和 greater 分别使用快速排序;
5. 最后,将排好序的 less 和 pivot 和排好序的 greater 合并在一起并返回。
希望这个程序能帮到你!
### 回答2:
快速排序是一种高效的排序算法,它通过将待排序序列分割成较小的子序列进行递归操作,最终将序列排列有序。下面是使用Python语言编写的快速排序程序:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2] # 选择基准点
less, equal, greater = [], [], [] # 分割序列
for num in arr:
if num < pivot:
less.append(num)
elif num == pivot:
equal.append(num)
else:
greater.append(num)
return quick_sort(less) + equal + quick_sort(greater) # 递归排序子序列
# 测试代码
arr = [6, 2, 8, 12, 5, 1]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
在该程序中,我们定义了名为`quick_sort`的函数,它接受一个待排序的列表作为参数。首先,我们检查传入的列表长度是否小于等于1,如果是的话,直接返回该列表。然后,选择列表中间位置的元素作为基准点。接下来,我们遍历整个列表,将小于基准点的元素放入`less`列表中,将等于基准点的元素放入`equal`列表中,将大于基准点的元素放入`greater`列表中。最后,通过递归调用`quick_sort`函数对`less`和`greater`列表进行排序,然后将排序后的`less`列表、`equal`列表和`greater`列表连接在一起作为函数的返回值。最终,我们可以得到一个排列有序的列表作为结果。
以上就是使用Python编写快速排序程序的方法。快速排序的核心思想是分治思想,通过递归操作将序列分割成较小的子序列,最终达到排序的目的。
### 回答3:
下面是用Python编写的一个快速排序程序的示例:
```
def quicksort(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 quicksort(left) + middle + quicksort(right)
nums = [5, 9, 3, 1, 2, 8, 4, 7, 6]
sorted_nums = quicksort(nums)
print(sorted_nums)
```
此程序使用快速排序算法对给定的列表进行排序。`quicksort`函数采用递归的方式实现快速排序。它首先检查列表的长度是否小于等于1,如果是,则直接返回该列表。然后,它选择一个元素作为枢纽(pivot),将列表分为左、中和右三部分。左边部分包含所有小于枢轴的元素,右边部分包含所有大于枢轴的元素,中间部分包含所有与枢轴相等的元素。然后,递归地对左、右两部分进行快速排序,最后将排好序的左、中、右三部分组合在一起返回。
以上的程序示例仅供参考,实际的快速排序实现可能会有所不同。
阅读全文