写一个python的快速排序
时间: 2023-03-15 22:53:57 浏览: 55
答:Python的快速排序算法:def quick_sort(array):
if len(array) <= 1:
return array
else:
pivot = array[0]
less_than_pivot = [i for i in array[1:] if i <= pivot]
greater_than_pivot = [i for i in array[1:] if i > pivot]
return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)print(quick_sort([10, 5, 2, 3]))
相关问题
写一个Python快速排序的代码
### 回答1:
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [i for i in arr[1:] if i <= pivot]
greater = [i for i in arr[1:] if i > pivot]
return quick_sort(less) + [pivot] + quick_sort(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 = [9, 5, 7, 2, 6, 1, 8, 3]
sorted_arr = quick_sort(arr)
print(sorted_arr)
```
这段代码实现了快速排序算法。首先选择一个枢纽元素(本例中选择列表中间的元素作为枢纽),然后将列表分为小于、等于和大于枢纽的三部分。接着对小于和大于的部分分别进行递归调用快速排序,并将结果与等于枢纽的部分合并,最终得到排序后的列表。
以上代码中通过递归调用函数`quick_sort`来进行快速排序。如果列表长度小于等于1,则直接返回列表。否则,选择枢纽元素,并创建三个空列表`less`、`equal`和`greater`来存放小于、等于和大于枢纽的元素。接着遍历列表,将小于、等于和大于枢纽的元素分别放入对应的列表中。最后,通过递归调用`quick_sort`对小于和大于的部分进行排序,并将结果与等于枢纽的部分进行合并,最终返回排序后的列表。
以上给出的测试示例中,原始列表为`[9, 5, 7, 2, 6, 1, 8, 3]`,排序后的结果为`[1, 2, 3, 5, 6, 7, 8, 9]`。
### 回答3:
快速排序是一种常用的排序算法,它通过分治的思想将一个数组分成两个子数组的排序问题,然后递归地对子数组进行排序,最后再将两个有序的子数组合并成一个有序的数组。
以下是使用Python实现的快速排序代码:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
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)
# 测试代码
arr = [6, 8, 3, 9, 5, 2]
print(quick_sort(arr))
```
在上面的代码中,首先判断数组的长度是否小于等于1,如果是,则直接返回数组;否则,选择数组的第一个元素作为基准值。然后,遍历数组的剩余部分,将小于等于基准值的元素放入`less`列表中,将大于基准值的元素放入`greater`列表中。最后,将经过快速排序的`less`、基准值`pivot`和`greater`拼接起来返回。
在测试代码中,我们使用一个无序的数组`[6, 8, 3, 9, 5, 2]`进行测试。运行代码后,输出的结果为`[2, 3, 5, 6, 8, 9]`,即数组经过快速排序后的有序结果。
快速排序的时间复杂度为O(nlogn),其中n为待排序数组的长度。
帮我写一个python快速排序
```python
def partition(arr,low,high):
i = ( low-1 )
pivot = arr[high]
for j in range(low , high):
if arr[j] <= pivot:
i = i+1
arr[i],arr[j] = arr[j],arr[i]
arr[i+1],arr[high] = arr[high],arr[i+1]
return ( i+1 )
def quickSort(arr,low,high):
if low < high:
pi = partition(arr,low,high)
quickSort(arr, low, pi-1)
quickSort(arr, pi+1, high)
arr = [10, 7, 8, 9, 1, 5]
n = len(arr)
quickSort(arr,0,n-1)
print ("Sorted array is:")
for i in range(n):
print ("%d" %arr[i]),
```
上面代码实现了一个快速排序算法。这个算法的基本思想是,在数组中选择一个元素(通常称为"基准"),并将数组划分为两部分,其中一部分的所有元素都小于等于基准,而另一部分的所有元素都大于基准。这个过程重复进行,直到整个数组有序。这里使用的是最简单的划分策略,即选择最后一个元素作为基准。