找出数组中第二大和第二小的值,并输出它们对应的索引

找出数组中第二大和第二小的值,并输出它们对应的索引
求代码,求完整代码,用简单易理解的方法
c语言,谢谢!

对数组进行两边遍历,第一遍找出最大值和最小值,然后将其更改为两者的平均值;第二次继续找最大值和最小值,那么就是第二大和第二小了。或者第一遍只需记录最大值和最小值的下标,第二次遍历时跳过这两个下标即可

#include <stdio.h>
int main()
{
      int n,a[1000],i;
      int max0=0,min0=0,max1=-1,min1=-1;
      scanf("%d",&n);
      for(i=0;i<n;i++)
          scanf("%d",&a[i]);
      for(i=1;i<n;i++)
      {
          if(a[max] < a[i])
              max = i;
          if(a[min] > a[i])
              min = i;
      }
      for(i=0;i<n;i++)
      {
          if(i==min || i==max)
              continue;
          if(max=-1 || min1==-1)
              max1= min1 = i;
          else
          {
             if(a[max1] < a[i])
                  max1 = i;
              if(a[min1] > a[i])
                min1 = i;
          }
      }
      printf("第二最大值为a[%d] = %d,第二最小值为a[%d]=%d",max1,a[max1],min1,a[min1]);
      return 0;
}

对数组排序后,取第二个位置对应的元素和倒数第二个位置对应的元素。