给定一组数,按照数组中出现的次数依次从大到小排序,出现次数一样的按照数组中的先后顺序输出
比如:
输入:1 1 1 1 3 3 3 4 5 2 6 6 6 6 6
输出:6 6 6 6 6 1 1 1 1 3 3 3 4 5 2
def qsort(li):
num = len(set(li))
#不能用*2
result = [[0 for i in range(num)]for i in range(2)]
i = 0
j = 0
while i < len(li) :
if li[i] not in result[0] :
result[0][j] = li[i]
result[1][j] = 1
j += 1
else :
tmp = result[0].index(li[i])
result[1][tmp] += 1
i += 1
while result[1] != [] :
#不能用None比较,result定义即为列表
times = max(result[1]) #最大次数
tmp = result[1].index(times) #最大次数所在的位置
for i in range(times) :
print(result[0][tmp],end='')
result[0].pop(tmp)
result[1].pop(tmp)
#print(result)
li = [1,1,1,1,3,3,3,4,5, 2, 6, 6, 6, 6, 6]
qsort(li)
结果