随笔 - 62  文章 - 96  trackbacks - 0
<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(7)

随笔分类(66)

随笔档案(62)

文章分类(31)

文章档案(32)

友情链接

最新随笔

积分与排名

  • 积分 - 231349
  • 排名 - 106

最新评论

阅读排行榜

评论排行榜

k为数组a中最大值,n为数组a的长度。
countSort用于对整型数组排序,时间复杂度为O(k+n)。
当k = O(n)时,时间复杂度变为O(n)。
c[i]记录a数组中数值大于或等于i的个数
int countSort(int * a, int k, int n)
{
    
int i;
    
int * c = new int [k+1], * b = new int [n];
    
for(i = 0; i <= k; i++)
        c[i] 
= 0;
    
for(i = 0; i < n; i++)
        c[a[i]]
++;
    
for(i = 1; i <= k; i++)
        c[i] 
+= c[i-1];
    
for(i = n - 1; i >= 0; i--)
    {
        b[c[a[i]]
-1= a[i];
        c[a[i]]
--;
    }
    
for(i = 0; i < n; i++)
        a[i] 
= b[i];
    delete [] b;
    delete [] c;
    
return 0;
}
posted on 2007-04-03 00:57 beyonlin 阅读(834) 评论(0)  编辑 收藏 引用 所属分类: C++之路

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理