使用备用最小值和最大值对数组进行排序

时间:2016-03-25 21:11:20

标签: c arrays algorithm sorting

给定一个数组,我被要求以某种方式对其进行排序,以便最小值首先是最大值第二,第二个最小值第三,依此类推。但是,当我输入值时,我没有得到所需的输出。

今天参加考试,我们对此表示赞赏。

#include<stdio.h>
int main()

{
    int i,j,k,a[6],temp,min;
    for(i=0;i<6;i++)
    scanf("%d",&a[i]);

    for(j=0;j<6;j++)
    {
        if(j%2==0)
        {
            min=a[j];
            for(k=j;k<6;k++)
            {
                if(a[k++]<min)
                min=a[k++];
            }

            temp=a[j];
            a[j]=min;
            min=temp;
        }
        else
        {
            min=a[j];
            for(k=j;k<6;k++)
            {
                if(a[k++]>min)
                min=a[k++];
            }

            temp=a[j];
            a[j]=min;
            min=temp;
        }
        printf("%d ",a[j]);
    }
}

2 个答案:

答案 0 :(得分:0)

min用作索引(min=j)而不是值(min=a[j]

像这样:

min=j;
for(k=j;k<6;k++)
{
    if(a[k]<a[min]){//if(a[k]>a[min]){
        min=k;
    }
}

temp=a[j];
a[j]=a[min];
a[min]=temp;

答案 1 :(得分:0)

给你一些建议,虽然它可能是重复的。在索引数组(k++)时调用a[k++]时,尽管没有完成循环,但总是递增k。因此for(k.....)循环不会传递所有其他数组元素。