原创
基数排序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;
}
文章评论(0条评论)
登录后参与讨论