读书人

依照最大值,最小值,次大值,次小值.的顺

发布时间: 2012-12-21 12:03:49 作者: rapoo

按照最大值,最小值,次大值,次小值..的顺序排列数组

/* *  对int数组进行排序,使第1个是最大,第2个是最小的 *  第三个是次大的,第四个是次小的,以此类推  *  例如a={3,7,1,9,10,2,6,4,8,5} *  则输出结果为{10,1,9,2,8,3,7,4,6,5} */#include<stdio.h>/* * 采用类似于选择排序的算法 */  void adjust(int a[],int n){     for(int i=0;i<n;i++)   {       //找最大值       if(i%2==0)     {         int j=i+1;         //记录最大值的位置         int loc=i;         for(;j<n;j++)       {          if(a[j]>a[loc])loc=j;       }         //发生交换         if(loc!=i)       {          int temp=a[loc];          a[loc]=a[i];          a[i]=temp;       }     }      //找最小值      else    {        int j=i+1;        //记录最小值的位置        int loc=i;        for(;j<n;j++)      {         if(a[j]<a[loc])loc=j;      }       //发生交换       if(loc!=i)     {        int temp=a[loc];        a[loc]=a[i];        a[i]=temp;        }   } }}int main(){       int i=0;       int a[]={3,7,1,9,10,2,6,4,8,5};       int n=sizeof(a)/sizeof(a[0]);       printf("发生交换之前:\n");       for(i=0;i<sizeof(a)/sizeof(a[0]);i++)     {        printf("%d ",a[i]);     }       printf("\n");       adjust(a,n);       printf("发生交换之后:\n");       for(i=0;i<sizeof(a)/sizeof(a[0]);i++)     {       printf("%d ",a[i]);     }      return 0;}

?

读书人网 >编程

热点推荐