快速排序非递归python
时间: 2023-11-17 10:02:00 浏览: 102
快速排序是一种常用的排序算法,它的主要思想是通过一趟排序将待排序列分割成独立的两部分,其中一部分的所有元素都比另一部分的所有元素小,然后再按此方法对这两部分分别进行快速排序,整个排序过程可以递归进行,也可以使用非递归的方式实现。
以下是使用非递归方式实现快速排序的Python代码:
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
stack = [(0, len(arr) - 1)]
while stack:
left, right = stack.pop()
if left >= right:
continue
pivot = arr[left]
i, j = left, right
while i < j:
while i < j and arr[j] >= pivot:
j -= 1
arr[i] = arr[j]
while i < j and arr[i] <= pivot:
i += 1
arr[j] = arr[i]
arr[i] = pivot
stack.append((left, i - 1))
stack.append((i + 1, right))
return arr
```
该代码使用了栈来模拟递归过程,每次取出栈顶的左右边界,进行一次快速排序,然后将左右子序列的左右边界入栈,直到栈为空。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)