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

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

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

#include 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;kmin) min=a[k++]; } temp=a[j]; a[j]=min; min=temp; } printf("%d ",a[j]); } } 

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

像这样 :

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

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