小程序(三)数组排序问题1奇偶数组排序
来源:互联网 发布:无主之地2无网络连接 编辑:程序博客网 时间:2024/06/05 02:51
对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。
思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。
#include<stdio.h>#include<stdlib.h>#include<string.h>void swap(int *arr_part,int n){int temp;temp = arr_part[n]; arr_part[n] = arr_part[n+1]; arr_part[n+1] = temp; }int * arrange_arr(int *arr_part,int len_part,int flag) //从小到大排序{int m,n;for(m=0;m<len_part-1;m++) for(n=0;n<len_part-1-m;n++) {if(flag == 1) {if( arr_part[n]>arr_part[n+1])//从小到大排序 swap(arr_part,n); }else { if( arr_part[n]<arr_part[n+1])//从大到小排序 swap(arr_part,n); } } return arr_part;}int main(){int arr[] = {2,3,4,1,44,8,12,23,19,22,57,89,11,19,25};int *arr_result; int * arr_odd;int * arr_even;int len = sizeof(arr)/sizeof(int);arr_odd = (int *)malloc(sizeof(int)*len);//C的数组是不可以动态增长,如果你不想使用链表,可以使用指针arr_even = (int *)malloc(sizeof(int)*len);arr_result = (int *)malloc(sizeof(int)*len);int k1 = 0;int k2 = 0;for(int i=0;i<len;i++) { if( arr[i]%2!=0 ){arr_odd[k1] = arr[i];k1++; } else{arr_even[k2] = arr[i]; k2++; } } int flag_odd = 1; int *re_arr_odd =arrange_arr( arr_odd, k1, flag_odd); int flag_even = 0;int *re_arr_even = arrange_arr(arr_even, k2, flag_even);printf("输入数列: \n");for(int p=0;p<len;p++) printf("%d ",arr[p]);printf("\n");printf("奇数排序后的数列:");printf("\n");for(int p=0;p<k1;p++) printf("%d ",re_arr_odd[p]);printf("\n");printf("偶数排序后的数列:");printf("\n");for(int p=0;p<k2;p++) printf("%d ",re_arr_even[p]);printf("\n");if (k1<=k2){ int j = 0; for(int i=0;i<k1;i++) { arr_result[j] = re_arr_odd[i]; arr_result[j+1] = re_arr_even[i]; j = j+2; } for(int i=0;i<(k2-k1);i++) arr_result[2*k1 + i] = re_arr_even[k1 + i];}else{ int j = 0; for(int i=0;i<k2;i++) { arr_result[j] = re_arr_odd[i]; arr_result[j+1] = re_arr_even[i]; j = j+2; } for(int i=0;i<(k1-k2);i++) arr_result[2*k2 + i] = re_arr_odd[k2 + i];}printf("\n");printf("最终结果:\n");for(int i=0;i<len;i++) printf("%d ",arr_result[i]);getchar();return 0;}
- 小程序(三)数组排序问题1奇偶数组排序
- 数组奇偶数排序
- C语言实现数组的奇偶排序
- 1377 数组奇偶对调排序 C语言
- #PHP#(三)数组及数组排序
- 奇偶数排序--整数数组的奇偶数分开(小米公司笔试题)
- 三数组排序
- 数组排序问题(数字字符串排序)
- 数组计数排序,类似于桶排序小问题
- java数组、排序问题1
- 数组排序问题(指针)
- 数组排序(1)
- 数组元素奇偶排序程序中的死循环引起的思考
- 数组排序的问题
- C#数组排序问题
- java数组排序问题
- 数组的排序问题。
- 一道数组排序问题
- u-boot.lds 分析 .
- JavaScript访问弹出窗口的弹出窗口
- cassandra (2)Understanding the Architecture【Architecture in brief】
- Intent实现跳转
- android修行之路----经典书籍
- 小程序(三)数组排序问题1奇偶数组排序
- Maven常用命令
- Linux下的ELF文件格式简介 .
- 导致flash屏幕重绘的几种方式及避免重绘的方法
- android学习网站(持续更新)
- session和cookie的辨析
- Steve Yegge:Google面试秘籍
- JAVA 阻塞队列 ArrayBlockingQueue
- commons-fileupload组件实现的文件基本上传