Python写个快速排序
时间: 2023-08-27 11:16:02 浏览: 91
python递归实现快速排序
5星 · 资源好评率100%
### 回答1:
好的,以下是Python实现的快速排序代码:
```python
def quick_sort(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 quick_sort(left) + [pivot] + quick_sort(right)
```
快速排序的基本思想是选取一个基准元素,将数组分成两个部分,一部分是小于基准元素的,另一部分是大于等于基准元素的。然后对这两个部分递归进行快速排序。以上代码实现了递归的过程。
### 回答2:
快速排序是一种常用的排序算法,它的主要思想是通过将数组划分为较小和较大两个子数组,然后分别对这两个子数组进行递归排序,最终得到有序的数组。
下面是使用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)
```
这段代码中,我们首先判断数组的长度,如果长度小于等于1,则直接返回该数组,因为一个元素的数组已经是有序的。
接下来,我们选择数组中间的元素作为枢纽元,将原数组划分为小于、等于和大于枢纽元的三个子数组。
然后,我们分别对左半部分数组和右半部分数组进行递归调用快速排序。
最后,我们将左半部分数组、等于枢纽元的数组和右半部分数组拼接起来,就得到了排序后的数组。
快速排序的时间复杂度为O(nlogn),其中n表示数组的长度。通过递归的方式,快速排序将数组不断划分为更小的子数组,直到每个子数组长度为1或0。因此,它是一种效率较高的排序算法。
### 回答3:
快速排序(Quick Sort)是一种高效的排序算法,其运行原理是通过选择一个基准元素,将数据划分为左右两个子序列,并且左子序列的元素小于等于基准元素,右子序列的元素大于等于基准元素。然后对左右子序列分别进行递归快速排序,最终将序列排序完成。
以下是使用Python编写的一个快速排序算法的示例代码:
```python
def quick_sort(nums):
if len(nums) <= 1:
return nums
else:
pivot = nums[0] # 选择第一个元素作为基准
left = [x for x in nums[1:] if x <= pivot] # 分割比基准小的元素
right = [x for x in nums[1:] if x > pivot] # 分割比基准大的元素
return quick_sort(left) + [pivot] + quick_sort(right) # 递归排序左右子序列
# 测试代码
nums = [5, 2, 8, 3, 9, 1]
sorted_nums = quick_sort(nums)
print(sorted_nums)
```
运行该代码,会输出排序完成的序列 `[1, 2, 3, 5, 8, 9]`。
这个快速排序算法的时间复杂度为 O(nlogn),其中 n 表示排序序列的长度。快速排序是一种非常常用和高效的排序算法,适用于各种类型的数据。
阅读全文