啥也别说了
看C++和算法,眼泪哗哗的。。。
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔分类
algorithm(14)
(rss)
pku/acm(59)
(rss)
数字图像(1)
(rss)
随笔档案
2010年5月 (1)
2010年3月 (5)
2009年3月 (1)
2008年12月 (1)
2008年11月 (66)
搜索
最新评论
1. re: ACM 2325 Persistent Number 大数相除
大数相除部分,貌似100/20的结果是错的。
--Raise
2. re: 字典树原理(转)
一看就是c++外行写的代码,
--ddd
3. re: ACM 1664 放苹果
赞。。新手 看了豁然开朗。.。谢谢了
--mokuku
4. re: 字典树原理(转)
代码风格不是很好
--ygqwna
5. re: 字典树原理(转)[未登录]
只有new,没有delete,必然内存泄露
--123
阅读排行榜
1. 字典树原理(转)(7979)
2. STL 堆排序使用和体会(转)(2072)
3. ACM 2325 Persistent Number 大数相除(1758)
4. 二叉树实例(1725)
5. 大概了解cin,cin.getline,cin.clear,cin.ignore,cin.get()的用法(1612)
评论排行榜
1. 字典树原理(转)(7)
2. ACM 1730 Perfect Pth Powers(3)
3. ACM 1929 Calories from Fat(2)
4. ACM 2316 SPIN(2)
5. ACM 2325 Persistent Number 大数相除(2)
Powered by:
博客园
模板提供:
沪江博客
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
计数排序
时间复杂度为O(n).
计数排序的基本思想就是对每一个输入元素X,确定出小于X的元素个数。
有了这一信息就可以把X直接放到它在最终输出数组中的位置上。
例如,如果有17个元素小于X,则X就属于第18个输出位置。
在计数排序算法的代码中,我们假定输入是个数组A[0...n-1],length[A]=n。另外还需要两个数组:存放排序结果的B[0...n-1],以及提供临时存储区的C[0...k].
#include
<
stdio.h
>
#include
<
stdlib.h
>
#include
<
iostream
>
using
namespace
std;
void
CountSort(
int
a[],
int
b[],
int
k,
int
num)
{
int
*
c
=
new
int
[k
+
1
];
for
(
int
i
=
0
;i
<=
k;i
++
)
c[i]
=
0
;
int
size
=
num;
for
(
int
j
=
0
;j
<
size;j
++
)
c[a[j]]
++
;
//
c[i]包含等于i的元素个数
for
(i
=
1
;i
<=
k;i
++
)
c[i]
=
c[i]
+
c[i
-
1
];
//
c[i]包含小于等于i的元素个数
for
(j
=
size
-
1
;j
>=
0
;j
--
)
{
b[c[a[j]]
-
1
]
=
a[j];
c[a[j]]
--
;
}
delete [] c;
}
void
main()
{
int
num,max;
cout
<<
"
输入最大整数及输入个数
"
<<
endl;
cin
>>
max;
cin
>>
num;
int
*
a
=
new
int
[num];
int
*
b
=
new
int
[num];
cout
<<
"
排序前:
"
<<
endl;
for
(
int
i
=
0
;i
<
num;i
++
)
{
cin
>>
a[i];
if
(a[i]
>
max)
i
--
;
}
CountSort(a,b,max,num);
cout
<<
"
排序后:
"
<<
endl;
for
(
int
j
=
0
;j
<
num;j
++
)
{
cout
<<
b[j]
<<
endl;
}
delete [] a;
delete [] b;
}
发表于 2010-03-10 23:29
hunter
阅读(310)
评论(0)
编辑
收藏
引用
所属分类:
algorithm
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
STL 堆排序使用和体会(转)
运用计数排序进行基数排序
sizeof用法(转)
计数排序
快速排序及二分查找
堆排序
大概了解cin,cin.getline,cin.clear,cin.ignore,cin.get()的用法
合并排序
二叉树实例
二叉树前序、中序、后序三种遍历的非递归算法
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理