快速排序非递归实现
Posted tsdblogs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序非递归实现相关的知识,希望对你有一定的参考价值。
def quick_sort(arr): ‘‘‘‘‘ 模拟栈操作实现非递归的快速排序 ‘‘‘ if len(arr) < 2: return arr stack = [] stack.append(len(arr)-1) stack.append(0) while stack: l = stack.pop() r = stack.pop() index = partition(arr, l, r) if l < index - 1: stack.append(index - 1) stack.append(l) if r > index + 1: stack.append(r) stack.append(index + 1) def partition(arr, start, end): # 分区操作,返回基准线下标 pivot = arr[start] while start < end: while start < end and arr[end] >= pivot: end -= 1 arr[start] = arr[end] while start < end and arr[start] <= pivot: start += 1 arr[end] = arr[start] # 此时start = end arr[start] = pivot return start
以上是关于快速排序非递归实现的主要内容,如果未能解决你的问题,请参考以下文章