原创 基数排序C++实现

2010-1-24 10:30 4179 7 7 分类: 软件与OS
#include <iostream>
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=0;
 }
 for(int i="0";i<leng;i++)
 {
  c[a/radix%10]++;
 }
 for(int i="1";i<10;i++)
 {
  c+=c[i-1];
 }
 for(int i="leng-1";i>=0;i--)
 {
  b[c[a/radix%10]-1]=a;/*从0开始,固减1*/
  c[a/radix%10]--;
 }
 for(int i="0";i<leng;i++)
 {
  a=b;
 }
 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<leng;i++)
 {
  if(max<a)
  {
   max=a;
  }
 }
 return max;
}
void radixsort::input()
{
 cout<<"请输入参加排序整数的个数\n";
 cin>>leng;
 a=new int[leng];
 for(int i="0";i<leng;i++)
 {
  cout<<"请输入第"<<i+1<<"个整数\n";
  cin>>a;
 }
}
void radixsort::output()
{
 cout<<"现在数组中的数字分别为:\n";
 for(int i="0";i<leng;i++)
 {
  cout<<a<<"\t";
 }
 cout<<endl;
}
int main()
{
 radixsort test;
 test.input();
 test.output();
 cout<<"排序中......\n";
 test.radix_sort();
 cout<<"完成!\n";
 test.output();
 return 0;
}
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条