#include <iostream>
using namespace std ;
#define N 10
#define inf -100000000
void count_sort(int a[] , int b[] , int k )
{
int i , c[9];
for( i = 0 ; i <= k ; i ++)
c[i] = 0 ;
for( i = 0 ; i < N ; i ++) //统计相同数据的个数
c[a[i]] = c[a[i]] + 1 ;
for( i = 1 ; i <=k ; i ++)
c[i] = c[i-1] + c[i] ;
for( int j = N -1 ; j>=0 ; j --)
{
b[c[a[j]]-1] = a[j] ;
c[a[j]] -- ; //这里主要是为了相同的数字而处理的,相同的数字必须位置不一样
}
return ;
}
int main(int argc , char **argv)
{
int a[N] = {1,2,5,8,4,3,8,3,8,8};
int b[N] , k = inf , i ;
for(i = 0 ; i < N ;i ++)
k = k < a[i] ? a[i] : k ;
count_sort(a , b , k ); //计数排序
for( i = 0 ; i < N ; i ++)
cout << b[i] << " " ;
cout << endl;
return 0 ;
}
计数排序
最新推荐文章于 2024-02-19 09:52:43 发布