为何数组排序出错
这个排序程序为何出错啊#include<iostram>usingnamespacestd;#definesize8voidslesort(floatitems[],in...
这个排序程序为何出错啊
#include<iostram>
using namespace std;
#define size 8
void slesort(float items[],int n);
int findindexofmin(const float x[],int startindex,int endindex);
void exchange(float x,float y);
int main()
{
float ary[size];
for(int i=0;i<size;i++)
{
cout<<"enter the"<<(i+1)<<"element"<<endl;
cin>>ary[i];
}
slesort(ary,size);
for(int i=0;i<size;i++)
cout<<"the"<<' '<<i+1<<"number is"<<ary[i]<<endl;
return 0;
}
void slesort(float items[],int i)
{
int min;
for(int i=0;i<size-1;i++)
{
min=findindexofmin(ary,i+1,size-1);
if(ary[i]>ary[min])
exchange(ary[i],ary[min]);
}
return;
}
int findindexofmin(const float x[],int startindex,int endindex)
{
int minindex;
if((startindex<0)&&(endindex>size))
{
cout<<"ERROR"<<endl;
return -1;
}
minindex=startindex;
for(int i=0;i<endindex;i++)
if(ary[i]<ary[minindex])
minindex=i;
return minindex;
}
void exchange(float x,float y)
{
float temp;
temp=x;
x=y;
y=temp;
} 展开
#include<iostram>
using namespace std;
#define size 8
void slesort(float items[],int n);
int findindexofmin(const float x[],int startindex,int endindex);
void exchange(float x,float y);
int main()
{
float ary[size];
for(int i=0;i<size;i++)
{
cout<<"enter the"<<(i+1)<<"element"<<endl;
cin>>ary[i];
}
slesort(ary,size);
for(int i=0;i<size;i++)
cout<<"the"<<' '<<i+1<<"number is"<<ary[i]<<endl;
return 0;
}
void slesort(float items[],int i)
{
int min;
for(int i=0;i<size-1;i++)
{
min=findindexofmin(ary,i+1,size-1);
if(ary[i]>ary[min])
exchange(ary[i],ary[min]);
}
return;
}
int findindexofmin(const float x[],int startindex,int endindex)
{
int minindex;
if((startindex<0)&&(endindex>size))
{
cout<<"ERROR"<<endl;
return -1;
}
minindex=startindex;
for(int i=0;i<endindex;i++)
if(ary[i]<ary[minindex])
minindex=i;
return minindex;
}
void exchange(float x,float y)
{
float temp;
temp=x;
x=y;
y=temp;
} 展开
2个回答
展开全部
#include<iostream>
using namespace std;
#define size 8
void slesort(float items[],int n);
int findindexofmin(const float x[],int startindex,int endindex);
void exchange(float x,float y);
int main()
{
float ary[size];
for(int i=0;i<size;i++)
{
cout<<"enter the"<<(i+1)<<"element"<<endl;
cin>>ary[i];
}
slesort(ary,size);
for( i=0;i<size;i++)
cout<<"the"<<' '<<i+1<<"number is"<<ary[i]<<endl;
return 0;
}
void slesort(float items[],int i)
{
int min;
for(i=0;i<size-1;i++)
{
min=findindexofmin(items,i+1,size-1);
if(items[i]>items[min])
exchange(items[i],items[min]);
}
return;
}
int findindexofmin(const float x[],int startindex,int endindex)
{
int minindex;
if((startindex<0)&&(endindex>size))
{
cout<<"ERROR"<<endl;
return -1;
}
minindex=startindex;
for(int i=0;i<endindex;i++)
if(x[i]<x[minindex])
minindex=i;
return minindex;
}
void exchange(float x,float y)
{
float temp;
temp=x;
x=y;
y=temp;
}
改后编译能运行,但结果不对,问题出在你的void exchange(float x,float y)函数,这样写交换不了两数的,应该用指针或引用,其它的函数也有问题,建议楼主再想想。排序的问题用冒泡法等方法不是很好么
using namespace std;
#define size 8
void slesort(float items[],int n);
int findindexofmin(const float x[],int startindex,int endindex);
void exchange(float x,float y);
int main()
{
float ary[size];
for(int i=0;i<size;i++)
{
cout<<"enter the"<<(i+1)<<"element"<<endl;
cin>>ary[i];
}
slesort(ary,size);
for( i=0;i<size;i++)
cout<<"the"<<' '<<i+1<<"number is"<<ary[i]<<endl;
return 0;
}
void slesort(float items[],int i)
{
int min;
for(i=0;i<size-1;i++)
{
min=findindexofmin(items,i+1,size-1);
if(items[i]>items[min])
exchange(items[i],items[min]);
}
return;
}
int findindexofmin(const float x[],int startindex,int endindex)
{
int minindex;
if((startindex<0)&&(endindex>size))
{
cout<<"ERROR"<<endl;
return -1;
}
minindex=startindex;
for(int i=0;i<endindex;i++)
if(x[i]<x[minindex])
minindex=i;
return minindex;
}
void exchange(float x,float y)
{
float temp;
temp=x;
x=y;
y=temp;
}
改后编译能运行,但结果不对,问题出在你的void exchange(float x,float y)函数,这样写交换不了两数的,应该用指针或引用,其它的函数也有问题,建议楼主再想想。排序的问题用冒泡法等方法不是很好么
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询