啊哈算法学习-快速排序

总感觉哪里不对的样子。。最后执行的时候有好多次m和n相等。。。。没有想出来是哪里有问题可以改进

import time
nums=[3,2,6,8,5,9,1,11,7,4]
def oneceSort(array,i):
    key=array[i]
    m=len(array)-1
    n=1
    while n<m:
        while array[m]>key:
            m-=1
        while array[n]<key:
            n+=1
        print array[n],array[m]
        print n,m
        if n<=m:
            array[m],array[n]=array[n],array[m]
        else:
            print array
            array[m],array[i] = array[i],array[m]
        print array
        time.sleep(1)
for i in range(len(nums)-1):
    oneceSort(nums,i)

执行结果:

>>> ================================ RESTART ================================
>>> 
6 1
2 6
[3, 2, 1, 8, 5, 9, 6, 11, 7, 4]
8 1
3 2
[3, 2, 1, 8, 5, 9, 6, 11, 7, 4]
[1, 2, 3, 8, 5, 9, 6, 11, 7, 4]
2 2
1 1
[1, 2, 3, 8, 5, 9, 6, 11, 7, 4]
3 3
2 2
[1, 2, 3, 8, 5, 9, 6, 11, 7, 4]
8 4
3 9
[1, 2, 3, 4, 5, 9, 6, 11, 7, 8]
9 8
5 9
[1, 2, 3, 4, 5, 8, 6, 11, 7, 9]
8 7
5 8
[1, 2, 3, 4, 5, 7, 6, 11, 8, 9]
11 8
7 8
[1, 2, 3, 4, 5, 7, 6, 8, 11, 9]
8 8
7 7
[1, 2, 3, 4, 5, 7, 6, 8, 11, 9]
5 5
4 4
[1, 2, 3, 4, 5, 7, 6, 8, 11, 9]
7 6
5 6
[1, 2, 3, 4, 5, 6, 7, 8, 11, 9]
7 7
6 6
[1, 2, 3, 4, 5, 6, 7, 8, 11, 9]
7 7
6 6
[1, 2, 3, 4, 5, 6, 7, 8, 11, 9]
8 8
7 7
[1, 2, 3, 4, 5, 6, 7, 8, 11, 9]
11 9
8 9
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
11 11
9 9
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值