首页 > 代码库 > 数组奇偶数排序

数组奇偶数排序

给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[] 数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。

例如:input[] = {3, 6, 1, 9, 7} output[] = {3, 7, 9, 6, 1}; input[] = {3, 6, 1, 9, 7, 8} output[] = {1, 6, 8, 9, 7, 3}

函数接口 void sort(int input[], int n, int output[])

 

 1 #include<stdio.h> 2 void sort(int input[], int n, int output[]) 3 { 4     int i,j,k; 5     for (i=0; i < n-1; i++) 6         for (j=1; j < n-i; j++) 7     { 8         if (input[j-1] < input[j]) 9         {10             int t = input[j-1];11             input[j-1] = input[j];12             input[j] = t;13         }14     }15     for (int i=0; i < n; i++)16         printf("%d ",input[i]);17     printf("\n");18     if (n % 2 == 1)19     {20         i = n / 2;21         j = n /2 + 1;22         k = 0;23         output[i--] = input[k++];24         for (; k < n; ){25             output[i--] = input[k++];26             output[j++] = input[k++];27         }28     }29     else30     {31         j = n / 2;32         i = n / 2 - 1;33         for (k=0; k < n; ){34             output[j++] = input[k++];35             output[i--] = input[k++];36         }37     }38 }39 int main()40 {41     int n,input[100],output[100];42     scanf("%d",&n);43     for (int i=0; i < n; i++)44     {45         scanf("%d",&input[i]);46     }47     sort(input,n,output);48     for (int i=0; i < n; i++)49         printf("%d ",output[i]);50     printf("\n");51 }

数组奇偶数排序