#include<iostream>
using namespace std;
void print_array(int a[] , int n)
{
for(int i = 0 ; i < n ; i++)
{
cout<<" "<< a[i];
}
cout<<endl;
}
void count_sort(int *a,int length_ab,int *b,int k)
{
int *c = new int[k];
for(size_t i =0;i<=k;i++)
c[i]=0;//数组初始化
for(size_t j =0;j<length_ab;j++)
c[a[j]]++;//重复数计数
for(size_t m = 1;m<=k;m++)
c[m]=c[m]+c[m-1];//小于或等于k的值
//print_array(c,k+1);
for(int d=length_ab-1;d>=0;d--)
{
b[c[a[d]]-1] = a[d];//定位
c[a[d]]--;//重复数左移
}
}
int main()
{
int k = 5;
int a[8] = {2,5,3,0,2,3,0,3};
cout<<"before heapsort"<<endl;
print_array(a,8);
int b[8]={0,0,0,0,0,0,0,0};
cout<<endl;
count_sort(a,8,b,k);
cout<<"after heapsort"<<endl;
print_array(b,8);
}解释见注释
计数排序
最新推荐文章于 2024-11-16 14:38:00 发布
1577

被折叠的 条评论
为什么被折叠?



