首页 > 其他 > 详细

利用栈非递归实现块排

时间:2018-04-14 13:33:18      阅读:220      评论:0      收藏:0      [点我收藏+]

递归实现块排:快速排序+随机快排

 

非递归实现块排具体思路如下图:

技术分享图片

 

# -*- 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

 

利用栈非递归实现块排

原文:https://www.cnblogs.com/ybf-yyj/p/8831213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!