首页 > 代码库 > 数组奇偶数排序
数组奇偶数排序
给定一个数组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 }
数组奇偶数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。