算法导论笔记——计数排序

来源:互联网 发布:航天信息开票软件下载 编辑:程序博客网 时间:2024/05/17 05:47

计数排序

是比快速排序还快的排序算法
冒泡排序,快速排序,归并排序等算法都是基于比较的算法,数学可以证明,这些算法的速度极限是O(lgn)
而计数排序的速度为O(n+k)

#A待排序数组,k数组中最大值def countingSort(A,k):    #k是数组中的最大值    C = []    #B将作为装再排序后的数组    B = []    k = k+1    #初始化C,他将作为“表”使用    for i in range(0,k):        C.append(0)    # 在C中统计每个数的出现次数,顺便初始化一下B    for a in A:        C[a]+=1        B.append(0)    #根据次数计算出现位置,你会发现最后一个数正好等于总数    for i in range(1,k):        C[i]+=C[i-1]    #接下来就是精髓:    #A的值做为C的下标直接得到排序后的位置赋值给B    for j in reversed(A):#倒序遍历        B[C[j]-1] = j        C[j]-=1    return B

第一次发博客,希望大家提宝贵意见

0 0
原创粉丝点击