来源:
<啊哈算法>
5个数字 5 3 5 2 8需要排序.
用到了桶排序思路
l=[0,0,0,0,0,0,0,0,0,0]
p=[5,3,5,2,8]
for i in range(10):
for j in p:
if i==j:
l[i]+=1
print l
new_l=[]
for i in range(10): #核心点在这里
if l[i]!=0:
for j in range(l[i]):
new_l.append(i)
print new_l
简化成:对一下,对一下,如果值不为0,就输出对应的index.如值为1,输出一次该index,如果值为2输入两次值对应的index.
[0, 0, 1, 1, 0, 2, 0, 0, 1, 0]
从大到小排序:
将一个序列反序的输出:[如我已经从小到大排序好了一个序列,我计算出序列长度,反序的输出]
In [1]: l=range(10)
In [2]: l
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [3]: for i in range(10):
...: print l[9-i]
...:
9
8
7
6
5
4
3
2
1
0
转载于:https://blog.51cto.com/lannyma/1786784