啊哈算法学习-快速排序

总感觉哪里不对的样子。。最后执行的时候有好多次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]
经验分享 程序员 微信小程序 职场和发展