C语言实现数组的奇偶排序
来源:互联网 发布:软件做成启动项 编辑:程序博客网 时间:2024/05/16 23:45
今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。
思路1:创建新的数组对所求数组进行遍历,技术放在一起偶数放在一起,再用穿件数组中的内容替换到所求数组中,代码如下:
#define LEN 10#include<stdio.h>#include<stdlib.h>int main(){int arr[LEN] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };//数组的初始化int odd[LEN] = { 0 };//用来存储奇数int dou[LEN] = { 0 };//用来存储偶数int j = 0;int k = 0;for (int i = 0; i < LEN; i++){if (arr[i] % 2){odd[j] = arr[i];j++;}else{dou[k] = arr[i];k++;}}for (int i = 0; i < LEN; i++)//对目标数组的更改{if (i <= j){arr[i] = odd[i];}else{arr[i] = dou[i - j - 1];}}for (int i = 0; i < LEN; i++){printf("%d ", arr[i]);}system("pause");return 0;}
思路2:如果不允许创建新的空间变量怎么办呢,我们可以用冒泡排序的思想来解决这个问题,如果这个数是奇数,我们就把它冒泡的数组顶端,依次冒泡下去,我们就能得到答案,实现代码如下:
#include<stdio.h>int* doubleline(int *a, int size)//冒泡排序实现奇偶排序所封装的函数{int i = 0;for (i = 0; i < size; i++)//冒泡过程{for (int j = 0; j < size - i - 1; j++){if ((*(a + j) % 2)==0){int tmp = *(a + j);*(a + j) = *(a + j + 1);*(a + j + 1) = tmp;}}}return a;}int main()//调试过程{int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };int size = sizeof(arr) / sizeof(int);//求取数组大小int *p = doubleline(arr, size);for (int i = 0; i < size; i++){printf("%d ",*(p+i));}system("pause");return 0;}
个人认为冒泡排序虽然节省了空间,但是如果数组特别大的时候这样做的效率是极其低下的,希望运用的时候斟酌下。
如有什么不足之处,希望批评指正。
本文出自 “pawnsir的IT之路” 博客,请务必保留此出处http://10743407.blog.51cto.com/10733407/1713092
0 0
- C语言实现数组的奇偶排序
- 实现奇偶排序(c语言)
- 1377 数组奇偶对调排序 C语言
- 基于数组的堆排序算法的C语言实现
- 奇偶排序Linux下c 实现
- 奇偶排序Linux下c 实现
- C语言实现数组快速排序
- C语言实现数组快速排序算法
- 数组奇偶数排序
- 数组的实现---C语言
- c语言--数组&排序
- 奇偶冒泡排序的CUDA实现
- C语言数组实现冒泡排序和选择排序程序
- C语言数组实现冒泡排序和选择排序程序
- c语言:奇偶个数
- 奇偶排序java实现
- Java 实现奇偶排序
- 【C语言】用宏实现一个整形奇偶位交换
- 求N个数的最小公倍数
- 顺序表应用6:有序顺序表查询
- 递归调用的实例讲解
- 递归调用实例分析2.在函数中间的递归与在函数尾部的递归
- c语言不定参数与printf函数的实现
- C语言实现数组的奇偶排序
- 一个数组中所有的数都是成对出现的只有一个或者两个数字是单独的,求这个数
- C语言中模拟实现strcpy,strstr,strcat函数
- C语言模拟实现memcpy,memmove函数
- C语言中的指针与数组的关联1
- C语言中指针与函数的关联2(数组的降级)
- 指针与数组的关联3 --声明
- 模拟实现C语言strncpy.strncat.strncmp函数
- C语言模拟实现memset.memcmp函数