小程序(三)数组排序问题1奇偶数组排序
2013-07-02 10:09
253 查看
对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数 若奇数和偶数不等长,则把剩下的直接放到数组中。
思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。
思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后组织数据。
#include<stdio.h> #include<stdlib.h> #include<string.h> void swap(int *arr_part,int n) { int temp; temp = arr_part ; arr_part = 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 >arr_part[n+1])//从小到大排序 swap(arr_part,n); } else { if( arr_part <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; }
相关文章推荐
- java数组、字符串比较插入及排序问题
- 解决vc++DEBUG ERROR问题前几天师弟调试程序的时候出现了这样一个错误,出错的位置是在delete [] 一个动态分配的数组时出现的。 经过调查发现错误是因为他之前在给数组赋值的时候越界了
- PHP 字符串数组按照拼音排序的问题
- [Java]有关比较器(Comparator接口)的用法及对象数组排序问题
- 二维数组的列排序 考虑问题的全局性 声明数组必须要分配内存并清零
- 数组的排序问题
- 数组符值后,排序和修改,两个数组都会变的问题
- 在排序数组中查找特定条件数值的程序总结
- 用qsort对字符串数组排序需要注意的几个问题
- 数组排序问题(指针)
- 第十六周项目1按给定部分程序的要求,用指向数组的指针变量作为形式参数编写函数,完成排序
- iOS数组排序及遇到的问题duplicate symbol XXX
- 百练_2752:字符串数组排序问题
- 第一周第四天([大小写变换问题][判断是否为email][求对角线的值] [生成数组][数字中添加逗号][生成10个两位随机数,然后再进行排序] [复制数组||将指定数组的指定范围复制到新的数组])
- 使用std::sort()排序导致程序core问题分析
- PHP 数组排序二维或多维排序问题
- 使用内置函数解决PHP多维数组排序问题
- 给定一个字符数组,求由这些字符组成的所有不同的排序问题.
- 关于把二元查找树转变成排序的双向链表(树)的C语言设计程序执行后出现段错误的问题
- 一个数组变换的算法问题-关于前端的分页功能排序(点击/热门)功能