Python写快速排序
时间: 2023-03-13 16:38:02 浏览: 72
我可以用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)
相关问题
python写快速排序
### 回答1:
我可以用下面的 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)
### 回答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) # 递归排序左右子数组
# 测试代码
arr = [5, 2, 8, 1, 9, 4, 3, 7, 6]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
该代码首先定义了一个`quick_sort`函数来实现快速排序。在该函数内部,使用递归的方式对传入的数组进行排序。首先判断数组长度是否小于等于1,如果是则直接返回数组。否则,选择一个基准点(通常选择中间的元素),然后将数组分成三个部分:小于基准点的元素、等于基准点的元素、大于基准点的元素。最后,递归地对左右两个子数组进行排序,并将结果返回并拼接起来。
在代码的末尾,我们定义了一个测试数组`arr`,并调用`quick_sort`函数对其进行排序,最后打印排序后的结果。
以上就是用Python实现快速排序的代码和解释。该算法的时间复杂度为O(nlogn),是一种高效的排序算法。
### 回答3:
快速排序(Quicksort)是一种常用的排序算法,使用分治的思想进行排序。以下是使用Python编写的快速排序的实现:
```python
def quicksort(arr):
# 如果数组长度小于等于1,则直接返回
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)
# 测试
arr = [9, 4, 5, 2, 7, 1, 8, 3, 6]
sorted_arr = quicksort(arr)
print(sorted_arr)
```
以上代码首先定义了一个名为quicksort的函数用于快速排序。在函数内部,首先判断数组的长度,若小于等于1则直接返回。然后选择基准值为数组中间的元素,将数组分成小于等于基准值和大于基准值的两个子数组。接着,递归地调用快速排序函数对左右两个子数组进行排序。最后按顺序返回左子数组、基准值和右子数组的拼接结果。
在示例中,我们使用arr = [9, 4, 5, 2, 7, 1, 8, 3, 6]进行测试,并将排序结果打印输出。输出结果为[1, 2, 3, 4, 5, 6, 7, 8, 9],表示数组已成功按升序排序。
用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]
greater = [x for x in arr[1:] if x >= pivot]
return quick_sort(smaller) + [pivot] + quick_sort(greater)
```
在此代码中,我们首先检查数组是否只有一个元素或为空。 如果是这种情况,则返回数组。 否则,我们选择第一个元素作为枢轴。 然后,我们将数组拆分为较小和较大的两个子数组,分别包含小于枢轴和大于或等于枢轴的元素。 最后,我们递归地对较小的子数组和较大的子数组进行快速排序,并将它们与枢轴组合在一起。
阅读全文