c语言:输入a[10],将最大的元素与第一个元素交换,最小的元素与最后一个元素交换,输出数组所有元素。

这是选择排序的一个改进方案,每一轮循环可以找出最大和最小两个元素,可以使循环次数减少一半,请在此方法的基础之上进行改进,编出完整的排序程序来,降序。我的设计是这样的,但运行结果没办法正确排序,求问错在哪里?

第1个回答  2017-12-17
int min=0;
int minindex = 0;
int max=0;
int maxindex = 0;
int i = 0;

min = a[0];
max = a[0];
for (i=0;i<10;i++)
{
    if (a[i]>=max)
    {
        max = a[i];
        maxindex = i;
    }
    if (a[i]<=min)
    {
        min = a[i];
        minindex = i;
    }
}

a[maxindex] = a[0];
a[minindex] = a[9];
a[0] = max;
a[9] = min;

相似回答