
C++程序不能执行
#include<iostream.h>constintN=50;voidinput(inta[N],intN);voidchoosesort(inta[N],intN)...
#include<iostream.h>
const int N=50;
void input(int a[N],int N);
void choosesort(int a[N],int N);
void quicksort(int a[N],int N);
void maopaosort(int a[N],int N);
void output(int a[N],int N);
void main()
{
int a[N];
input(a,N);
cout<<"使用选择法排序结果如下:"<<endl;
choosesort(a,N);
output(a,N);
cout<<"使用快速法排序结果如下:"<<endl;
quicksort(a,N);
output(a,N);
cout<<"使用冒泡法排序结果如下:"<<endl;
maopaosort(a,N);
output(a,N);
}
void input(int a[N],int N)
{
cout<<"请输入待排序数列长度:"<<endl;
cin>>N;
cout<<"请输入待排序数列:"<<endl;
for(int i=0;i<N;i++)
cin>>a[i];
}
void choosesort(int a[N],int N)
{
for(int i=0;i<N;i++)
{
int k,t;
k=i;
for(int j=i+1;j<N;j++)
if(a[j]>a[k])
{
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void quicksort(int a[N],int N)
{
int i,j,k,m,n;
for(i=0,j=N;i<j;i++,j--)
{
if(a[j]>a[0])
{
k++;
m=a[j];
a[j]=a[0];
a[0]=m;
}
if(a[i]<a[0])
{
n=a[i];
a[i]=a[0];
a[0]=n;
}
}
do
{
quicksort(a,k);
quicksort(a,N-k-1);
}while(k>1);
}
void maopaosort(int a[N],int N)
{
int p,flag=0;
for ( int i=0;i<N-1;i++)
{
for (int j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
flag=1;
}
if(flag==0) break;
}
void output(int a[N],int N)
{
for(int i=0;i<N;i++)
cout<<a[i]<<'\t';
}
题目要求是用快速、选择、冒泡三种方法进行排序然后比较三种方法。可目前这个程序根本就不能正确执行。麻烦高手帮忙看看哪儿出错了,尽快回复阿,谢了。由于这是公开考试题,麻烦您把回复发我邮箱nini.vip@qq.com,谢谢。 展开
const int N=50;
void input(int a[N],int N);
void choosesort(int a[N],int N);
void quicksort(int a[N],int N);
void maopaosort(int a[N],int N);
void output(int a[N],int N);
void main()
{
int a[N];
input(a,N);
cout<<"使用选择法排序结果如下:"<<endl;
choosesort(a,N);
output(a,N);
cout<<"使用快速法排序结果如下:"<<endl;
quicksort(a,N);
output(a,N);
cout<<"使用冒泡法排序结果如下:"<<endl;
maopaosort(a,N);
output(a,N);
}
void input(int a[N],int N)
{
cout<<"请输入待排序数列长度:"<<endl;
cin>>N;
cout<<"请输入待排序数列:"<<endl;
for(int i=0;i<N;i++)
cin>>a[i];
}
void choosesort(int a[N],int N)
{
for(int i=0;i<N;i++)
{
int k,t;
k=i;
for(int j=i+1;j<N;j++)
if(a[j]>a[k])
{
k=j;
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void quicksort(int a[N],int N)
{
int i,j,k,m,n;
for(i=0,j=N;i<j;i++,j--)
{
if(a[j]>a[0])
{
k++;
m=a[j];
a[j]=a[0];
a[0]=m;
}
if(a[i]<a[0])
{
n=a[i];
a[i]=a[0];
a[0]=n;
}
}
do
{
quicksort(a,k);
quicksort(a,N-k-1);
}while(k>1);
}
void maopaosort(int a[N],int N)
{
int p,flag=0;
for ( int i=0;i<N-1;i++)
{
for (int j=0;j<N-1-i;j++)
if(a[j]>a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
flag=1;
}
if(flag==0) break;
}
void output(int a[N],int N)
{
for(int i=0;i<N;i++)
cout<<a[i]<<'\t';
}
题目要求是用快速、选择、冒泡三种方法进行排序然后比较三种方法。可目前这个程序根本就不能正确执行。麻烦高手帮忙看看哪儿出错了,尽快回复阿,谢了。由于这是公开考试题,麻烦您把回复发我邮箱nini.vip@qq.com,谢谢。 展开
1个回答
展开全部
#include<iostream.h>
#define N 50
void input(int [],int);
void choosesort(int [],int);
void quicksort(int [],int);
void maopaosort(int [],int );
void output(int [],int );
void main()
{
int a[N],b[N];
input(a,N);
for(int i=0;i<N;i++) b[i]=a[i]; //保存a
cout<<"使用选择法排序结果如下:"<<endl;
choosesort(a,N);
output(a,N);
for(int i=0;i<N;i++) a[i]=b[i]; //恢复a
cout<<"使用快速法排序结果如下:"<<endl;
quicksort(a,N);
output(a,N);
for(int i=0;i<N;i++) a[i]=b[i]; //恢复a
cout<<"使用冒泡法排序结果如下:"<<endl;
maopaosort(a,N);
output(a,N);
}
void input(int a[],int n)
{
cout<<"请输入待排序数列长度:"<<endl;
cin>>n;
cout<<"请输入待排序数列:"<<endl;
for(int i=0;i<n;i++)
cin>>a[i];
}
void choosesort(int a[],int n)
{
int j;
for(int i=0;i<n;i++)
{
int k,t;
k=i;
for(j=i+1;j<n;j++)
if(a[j]>a[k])
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void quicksort(int a[],int n)
{
int i,j,k,m,n;
k=0;
for(i=0,j=n;i<j;i++,j--)
{
if(a[j]>a[0])
{
k=j;
m=a[j];
a[j]=a[0];
a[0]=m;
}
if(a[i]<a[0])
{
k=i;
n=a[i];
a[i]=a[0];
a[0]=n;
}
}
do
{
quicksort(a,k-1);
quicksort(&a[k+1],n-k);
}while(k>1);
}
void maopaosort(int a[],int n)
{
int p,flag,j;
for ( int i=0;i<n-1;i++)
{
flag=0;
for (j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
flag=1;
}
if(flag==0) break;
}
void output(int a[],int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<'\t';
}
不对的地方我给你改了,算法也作了一些调整,你可以试试,手里没有工具,没法给你调试,自己试试吧。
#define N 50
void input(int [],int);
void choosesort(int [],int);
void quicksort(int [],int);
void maopaosort(int [],int );
void output(int [],int );
void main()
{
int a[N],b[N];
input(a,N);
for(int i=0;i<N;i++) b[i]=a[i]; //保存a
cout<<"使用选择法排序结果如下:"<<endl;
choosesort(a,N);
output(a,N);
for(int i=0;i<N;i++) a[i]=b[i]; //恢复a
cout<<"使用快速法排序结果如下:"<<endl;
quicksort(a,N);
output(a,N);
for(int i=0;i<N;i++) a[i]=b[i]; //恢复a
cout<<"使用冒泡法排序结果如下:"<<endl;
maopaosort(a,N);
output(a,N);
}
void input(int a[],int n)
{
cout<<"请输入待排序数列长度:"<<endl;
cin>>n;
cout<<"请输入待排序数列:"<<endl;
for(int i=0;i<n;i++)
cin>>a[i];
}
void choosesort(int a[],int n)
{
int j;
for(int i=0;i<n;i++)
{
int k,t;
k=i;
for(j=i+1;j<n;j++)
if(a[j]>a[k])
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
void quicksort(int a[],int n)
{
int i,j,k,m,n;
k=0;
for(i=0,j=n;i<j;i++,j--)
{
if(a[j]>a[0])
{
k=j;
m=a[j];
a[j]=a[0];
a[0]=m;
}
if(a[i]<a[0])
{
k=i;
n=a[i];
a[i]=a[0];
a[0]=n;
}
}
do
{
quicksort(a,k-1);
quicksort(&a[k+1],n-k);
}while(k>1);
}
void maopaosort(int a[],int n)
{
int p,flag,j;
for ( int i=0;i<n-1;i++)
{
flag=0;
for (j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
flag=1;
}
if(flag==0) break;
}
void output(int a[],int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<'\t';
}
不对的地方我给你改了,算法也作了一些调整,你可以试试,手里没有工具,没法给你调试,自己试试吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询