C语言实现数组的奇偶排序
程序员文章站
2022-05-17 23:32:55
今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。
思路1:创建新的数组对所求数组进行遍历,技术放在一起偶数放在一起,再用穿件数组中的内容替换到所求数组中,代码...
今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。
思路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; }
个人认为冒泡排序虽然节省了空间,但是如果数组特别大的时候这样做的效率是极其低下的,希望运用的时候斟酌下。
如有什么不足之处,希望批评指正。
上一篇: liunx----配置搜狗输入法
下一篇: [C语言]猴子吃桃问题
推荐阅读
-
用C语言实现“智障”的棋盘游戏
-
C语言 实现 给定两个整形变量的值,将两个值的内容进行交换
-
PHP 二维数组根据某个字段排序的具体实现_PHP
-
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”——C语言
-
输入若干个整数,输入0为止,统计正数,负数的个数(不使用数组,纯c语言)
-
C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
-
C#使用List类实现动态变长数组的方法
-
php实现数组按指定KEY排序的方法,php数组key排序_PHP教程
-
数据结构中括号匹配的代码实现(C语言)
-
PHP实现二维数组按某列进行排序的方法