用python写一个快速排序的程序
时间: 2023-11-22 15:05:44 浏览: 66
下面是一个使用 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 合并在一起并返回。
希望这个程序能帮到你!
相关问题
用python写一个快速排序程序,并给出测试用例
### 回答1:
快速排序是一种分治的排序算法,它的基本思想是:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。
下面是一份快速排序的代码:
```
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)
```
测试用例:
```
test_arr = [5, 1, 4, 2, 8, 3, 6, 9, 7, 10]
sorted_arr = quick_sort(test_arr)
print(sorted_arr) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
```
### 回答2:
快速排序是一种经典的排序算法,它使用递归的方式将数组分成较小和较大的两个子数组,并分别对它们进行排序,最后将两个子数组合并起来,实现整个数组的有序排列。
以下是用Python编写的快速排序程序:
``` python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
smaller = [x for x in arr[1:] if x <= pivot]
larger = [x for x in arr[1:] if x > pivot]
return quick_sort(smaller) + [pivot] + quick_sort(larger)
```
这个程序首先判断数组的长度是否小于等于1,如果是的话,直接返回该数组。如果不是,选择数组中的第一个元素作为枢纽元素(pivot),然后把数组分成比pivot小和比pivot大的两个子数组。然后递归地对两个子数组进行排序,最后将它们和pivot合并起来返回。
下面是一个简单的测试用例:
``` python
arr = [5, 2, 8, 9, 1, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
运行以上代码,输出结果应为:[1, 2, 3, 5, 8, 9],即数组按从小到大的顺序进行了排序。
快速排序的时间复杂度为O(nlogn),其中n是待排序数组的长度。
用Python写一个快速排序的程序
好的,以下是使用Python实现快速排序的示例代码:
```python
def quicksort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = []
right = []
for i in range(1, len(arr)):
if arr[i] < pivot:
left.append(arr[i])
else:
right.append(arr[i])
return quicksort(left) + [pivot] + quicksort(right)
```
在上述代码中,我们定义了一个名为 `quicksort` 的函数,该函数接受一个列表作为输入,并返回一个已排序的列表。
首先,我们判断列表的长度是否小于或等于1,如果是,则说明列表已经是有序的或为空列表,因此直接返回。
否则,我们选择列表的第一个元素作为“枢轴”(pivot),并将其从列表中删除。然后,我们迭代列表中的每个元素,如果元素小于枢轴,则将其添加到 `left` 列表中,否则添加到 `right` 列表中。
最后,我们将左半部分、枢轴和右半部分分别递归调用 `quicksort` 函数进行排序,并将它们拼接在一起,返回一个已排序的列表。
阅读全文