分治算法快速排序python交换位置while循环
时间: 2023-07-01 20:24:07 浏览: 47
以下是使用分治算法的快速排序Python代码,其中使用了while循环来交换位置:
```python
def quick_sort(array):
if len(array) <= 1:
return array
else:
pivot = array[0]
left = []
right = []
equal = []
for x in array:
if x < pivot:
left.append(x)
elif x > pivot:
right.append(x)
else:
equal.append(x)
return quick_sort(left) + equal + quick_sort(right)
array = [10, 7, 8, 9, 1, 5]
sorted_array = quick_sort(array)
print(sorted_array)
```
在这个代码中,我们首先检查数组的长度是否小于等于1,如果是,则直接返回该数组。否则,我们选取第一个元素(也可以随机选取)作为基准点(pivot),并将其从数组中移除。
接下来,我们使用三个列表(left,right和equal)来存储小于,大于和等于基准点的元素。我们遍历整个数组,将元素分别添加到这三个列表中。最后,我们将排序后的左子数组,基准点和排序后的右子数组连接起来,并返回结果。
在这个算法中,我们使用了递归来处理子数组,因此需要注意可能出现的栈溢出问题。同时,我们也使用了while循环来交换位置,这可以帮助我们快速地移动指针并完成排序。