利用栈非递归实现块排
Posted 每天学习一点点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用栈非递归实现块排相关的知识,希望对你有一定的参考价值。
递归实现块排:快速排序+随机快排
非递归实现块排具体思路如下图:
# -*- coding:utf-8 -*- def quickSort(list): stack=[0] stack.append(len(list)-1) #利用栈存储下标 while stack: j=stack.pop() i=stack.pop() mid=sort(i,j,list) if mid>i+1: stack.append(i) stack.append(mid-1) if mid<j-1: stack.append(mid+1) stack.append(j) # print stack #一次排序,返回下标 def sort(low,hight,list): if (low>hight): return j=hight i=low temp=list[low] while i!=j: while list[j]>=temp and i<j: j-=1 while list[i]<=temp and i<j: i+=1 if i<j: k=list[i] list[i]=list[j] list[j]=k list[low]=list[i] list[i]=temp print list return i list=[5,8,9,2,1,9,6,5] quickSort(list) print list
以上是关于利用栈非递归实现块排的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 代码片段,Snippets,Gist
急求matlab复数矩阵QR分解代码我知道matlab本身有qr函数 但是我想知道利用householder变换递归实现的原理。