Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1749477
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类:

2011-05-15 11:15:10

基数排序C++实现

#include
using namespace std;
class radixsort
{
 public:
  radixsort(){};
  ~radixsort()
  {
   delete[] a;
  };
  void input();
  void output();
  void radix_sort();
 private:
  int *a;
  int leng;
  int countsort(int radix);
  int getmax();
};
int radixsort::countsort(int radix)
{
 int c[10];
 int *b=new int[leng];
 for(int i="0";i<10;i++)
 {
  c[i]=0;
 }
 for(int i="0";i {
  c[a[i]/radix%10]++;
 }
 for(int i="1";i<10;i++)
 {
  c[i]+=c[i-1];
 }
 for(int i="leng-1";i>=0;i--)
 {
  b[c[a[i]/radix%10]-1]=a[i];/*从0开始,固减1*/
  c[a[i]/radix%10]--;
 }
 for(int i="0";i {
  a[i]=b[i];
 }
 delete[] b;
}
void radixsort::radix_sort()
{
 for(int i="1";getmax()/i>0;i*=10)
 {
  countsort(i);
 }
}
int radixsort::getmax()
{
 int max="a"[0];
 for(int i="1";i {
  if(max  {
   max=a[i];
  }
 }
 return max;
}
void radixsort::input()
{
 cout<<"请输入参加排序整数的个数\n";
 cin>>leng;
 a=new int[leng];
 for(int i="0";i {
  cout<<"请输入第"<  cin>>a[i];
 }
}
void radixsort::output()
{
 cout<<"现在数组中的数字分别为:\n";
 for(int i="0";i {
  cout< }
 cout<}
int main()
{
 radixsort test;
 test.input();
 test.output();
 cout<<"排序中......\n";
 test.radix_sort();
 cout<<"完成!\n";
 test.output();
 return 0;
}
阅读(1875) | 评论(0) | 转发(0) |
0

上一篇:桶排序C++实现

下一篇:计数排序C++实现

给主人留下些什么吧!~~