计数排序的原址排序

时间:2021-6-2 作者:qvyue

算法导论第八章思考题8-2.e答案,最后还是百度了答案,并不会,记录一下。

计数排序(稳定)
    for i = 0 to k
        c[i] = 0
    for j = 1 to A.length
        c[a[j]]++;  
    for i = 1 to k
        c[i]+=c[i-1];  
    for j = A.length down to 1
        b[c[a[j]]] = a[j]
        c[a[j]]--
计数排序原址排序(不稳定)
    for i = 0 to k
        c[i] = 0
    for j = 1 to A.length
        c[a[j]]++;  
    //将A初始化为0向量。  
    //之后无需插入0元素  
    for j = 1 to A.length
        A[j]=0;  
    //根据C中计数从后向前插入数据  
    //如果C[l]==C[l-1],说明l已经插入完毕或A中本来就没有l元素  
    for (int l=k;l>=1;l--)  
        while (C[l]!=C[l-1])  
            //这里C[l]--减去1是因为数组下标从0开始  
            A[(C[l]--)-1]=l;
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。