下面是我以前写的,希望对你有帮助。
#include
#include
#include
using namespace std;
#define N 100 //产生的数的个数
//冒泡排序
void Bubble_Sort(int R[],int n ){
char flag='0';
cout<<"是否输出所有的数字(1/0):"<
while(flag>'1'||flag<'0'){
cout<<"输入有误,请重新输入:"<
}
int i;
if(flag=='1'){
cout<<"排序前:"<
cout<
for(i=1;i
for(int j=1;j<=n-i;j++){
if(R[j] > R[j+1] ){
R[0]=R[j];
R[j]=R[j+1];
R[j+1]=R[0];
swap=1;
}
}
if(swap==0) // 没有发生一次交换,说明序列有序,则跳出循环,排序结束
break;
}
if(flag=='1'){
cout<<"冒泡排序后:"<
cout<
}
//快速排序
int Partition(int R[],int i,int j){ //已R[i]为支点进行划分,算法返回支点记录最终的位置
R[0]=R[i]; //缓存支点记录
while(i
j--;
if(i
i++;
}
while(i
if(i
j--;
}
}
R[i]=R[0];
return i;
}
void Quick_Sort(int R[],int s,int t){
int i;
if(s
Quick_Sort(R,s,i-1); //对支点前端子表递归排序
Quick_Sort(R,i+1,t); //对支点后端子表递归排序
}
}
void Quick(int R[],int n){
char flag='0';
cout<<"是否输出所有的数字(1/0):"<
while(flag>'1'||flag<'0'){
cout<<"输入有误,请重新输入:"<
}
int i;
if(flag=='1'){
cout<<"排序前:"<
cout<
Quick_Sort(R,1,n);
if(flag=='1'){
cout<<"快速排序后:"<
cout<
}
int main(){
while(1){
int R[N+1],i;
cout<<"1 在完全随机的情况下对关键码进行排序"<
cin>>p;
while(p-48<0||p-48>3){
cout<<"输入有误,请重新输入:"<
}
if(p-48==0)
break;
if(p-48==1){
srand((unsigned)time(NULL));
for(i=1;i<=N;i++)
R[i]=rand()%10000+1;
}
else if(p-48==2){
for(i=1;i<=N;i++)
R[i]=i;
}
else
for(i=N;i>=1;i--)
R[N-i+1]=i;
char k;
cout<
cout<<"1 冒泡排序"<
cout<<"请选择排序方法:"<
while(k-48<0||k-48>2){
cout<<"输入有误,请重新输入:"<
}
switch(k-48){
case 0:cout<<"谢谢使用!"<
case 2:Quick(R,N);break;
}
system("pause");system("cls");
}
return 0;
}
利用快速排序算法,目前速度最快的就是这个算法啦!
#include
#define swap(a,b)
void quick(int *a,int s,int t)
{
int i=s,j=t+1;
do
{
do i++;while(a[i]>a[s]);
do j--;while(a[j] if(i
if(s
void print(int *a,int n)
{
int i;
for(i=0;i
printf("\n");
}
int main()
{
int a[1800],i;
for(i=0;i<1800;i++)
a[i]=2300+i;
quick(a,0,1799);
print(a,10);
return 0;
}
完全满足你的需求! 希望你对有用!