#include<iostream>
using namespace std;
//选择排序
void SelectSort(int list[],int n)
{int temp,t,i,j,big;
for(i=0;i<n-1;i++)
{big=i;
for(j=i+1;j<n;j++)
{
if(list[big]<list[j])
big=j;
}
temp=list[i];
list[i]=list[big];
list[big]=temp;
}
for(t=0;t<n;t++)
{cout<<list[t];}
}
//冒泡排序
void bubble(int list[],int n){
int i,temp;
for(int p=1;p<n;p++)
{
for(i=0;i<n-p;i++)
if(list[i]<list[i+1])
{temp=list[i];
list[i]=list[i+1];
list[i+1]=temp;
}
}
for(i=0;i<n;i++)
{cout<<list[i];}}
//插入排序
void Insert(int list[],int n)
{
for(int i=1;i<n;i++)
{ int key = list[i];
int j=i-1;
while(j>=0&&key>list[j])
{list[j+1]=list[j];
j--;
}
list[j+1]=key;
}
for(int i=0;i<n;i++)
cout<<list[i];
}
//基数排序
int maxbit(int list[],int n)
{
int d=0;
int i;
int *temp=new int[n];
for(i=0;i<n;i++)
temp[i]=list[i];
for(i=0;i<n;i++)
{
int p=1;
while(temp[i]/10>0)
{p++;
temp[i]/=10;
}
if(d<p)
d=p;
}
delete[]temp;
return d;
}
void radixSort(int list[],int n)
{
int d=maxbit(list,n);
int *temp=new int[n];
int *count=new int[10];
int i,j,k;
int radix=1;
for(i=1;i<=d;i++)
{
for(j=0;j<n;j++)
{count[j]=0;
}
for(j=0;j<n;j++)
{
k=(list[j]/radix)%10;
count[k]++;
}
for(j=1;j<10;j++)
{
count[j]=count[j-1]+count[j];
}
for(j=n-1;j>=0;j--)
{
k=(list[j]/radix)%10;
count[k]--;
temp[count[k]]=list[j];
}
for(j=0;j<n;j++)
{
list[j]=temp[j];
}
radix=radix*10;
}
delete [] temp;
delete [] count;
for(i=0; i<n;i++)
{cout<<list[i];}
}
int main()
{int n,t;
cout<<"请输入n个数:"<<endl;
cin>>n;
int *list=new int[n];
cout<<"请依次输入n个数";
for(t=0;t<n;t++)
cin>>list[t];
SelectSort(list,n);
//bubble(list,n);
//Insert(list,n);
//radixSort(list,n);
}
来源:oschina
链接:https://my.oschina.net/u/562583/blog/90180