回 帖 发 新 帖 刷新版面

主题:[讨论]书序排序问题

这个排序程序为何出错啊

#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;
}

回复列表 (共1个回复)

沙发

#include<iostram>错了  iostream;
    float ary[size];定义成全局的;
void slesort(float items[],int i) 和你上面的函数说明不一样;

#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);
float ary[size];
int main()
{
    int i=0;
    for(;i<size;i++)
    {
        cout<<"enter the"<<(i+1)<<"element"<<endl;
        cin>>ary[i];
    }
    slesort(ary,size);
    for(;i<size;i++)
        cout<<"the"<<' '<<i+1<<"number is"<<ary[i]<<endl;
    return 0;
}
void slesort(float items[],int n)
{
    int min;
    for(int i=0;i<n-1;i++)
    {
        min=findindexofmin(ary,i+1,n-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;
}



我来回复

您尚未登录,请登录后再回复。点此登录或注册