按照最大值,最小值,次大值,次小值..的顺序排列数组
/* * 对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;}?