您的位置:首页 > 其它

啊哈算法学习-快速排序

2016-04-06 17:38 267 查看
总感觉哪里不对的样子。。最后执行的时候有好多次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
<key:
n+=1
print array
,array[m]
print n,m
if n<=m:
array[m],array
=array
,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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: