【问题标题】:Sorting an array with alternate smallest and largest values [duplicate]用交替的最小值和最大值对数组进行排序[重复]
【发布时间】:2016-07-13 16:34:47
【问题描述】:

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

感谢您的建议,因为我今天有考试。

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

【问题讨论】:

  • 谢谢,这个问题确实帮助了我,但我想知道为什么我的代码不正确。
  • 这仍然是题外话。了解How to Ask。并使用调试器。

标签: c arrays algorithm sorting


【解决方案1】:

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;

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2017-08-01
      • 2016-10-31
      • 2019-05-11
      • 1970-01-01
      • 2021-11-30
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      相关资源
      最近更新 更多