题目:#给定一个数组,已知数组中有大量的重复数字,如何对数字进行高效的排序
思路一:Hash法
#coding=utf-8 #对大量有重复数字的数组进行排序 #给定一个数组,已知数组中有大量的重复数字,如何对数字进行高效的排序 arr = [16,13,16,3,3,13,3,4,13,101,4,4] def sort_hash(a): """ Hash法 思路:创建一个hash表,然后遍历数组,若遍历的数在hash表中,对应的值+1 若不存在,把遍历的值加入hash表中,并初始化key对应的值为1 对hash 的key 进行快速排序(Mlog2M, M 为数组中不同数字的个数) 时间复杂度: N + Mlog2M 空间复杂度:N """ b = dict() for i in range(len(a)): if a[i] in b: b[a[i]] +=1 else: b[a[i]] = 1 c = b.keys() sort_quick(c, 0, len(b.keys())-1) print c for i in c: while(b[i]>0): print i b[i]-=1 def sort_quick(lists, low, high): if low >= high: return lists i,j = low, high key = lists