输入一个整数数组,实现一个函数,来调整该数组中数字的顺序
来使得数组中所有的奇数位于数组的前半部分。所有的偶数位于数组的后半部分。

比如现在有数组arr: 1 2 3 4 5 6

思路1:大部分同学第一想法可能就是,把数组arr遍历一遍,找出其中奇数,放到新数组arr1中
再把arr遍历一遍,找出其中偶数,放到数组arr2中。
最后把arr1里的数和arr2里的数再放回arr中。
但是这种方法你从头到尾要遍历3次arr,时间复杂度大了,纯纯的暴力求解

思路2:我们可以把定义一个left和right分别标记数组首元素和数组末尾元素

left遇到偶数停下,否则left++
right遇到奇数停下,否则right–

交换left和right下标的值

left继续++,遇到偶数停下
right继续–,遇到奇数停下
然后left和right交换

循环一直到left>=right时结束
这样,我们就只需要遍历一次数组arr就可以实现奇数在前,偶数在后了

具体代码如下:

int main()
{int n = 0;int arr[100] = { 0 };//这里假设数组大小不超过100printf("请输入你要测试的数组大小:");scanf("%d", &n);printf("请输入数组元素:");for (int i = 0;i < n;i++){scanf("%d", &arr[i]);}int left = 0;int right = n-1;while (left < right){while (arr[left] % 2 != 0)//left遇到偶数停下{left++;}if (left >= right)//防止遇到全奇数的情况,如果遇到全奇数,没有这个if,left会越界{break;//这里直接left一路走,已经比right大了,就可以直接跳出循环,下面就不用再走了}while (arr[right] % 2 != 1)//right遇到奇数停下{right--;}if (left < right)//这里需要额外判断一下是否left<right{//比如      1 2 3 4 5 6 7 8 9 10//已经变成了1 9 3 4 5 6 7 8 2 10//left指向4,right指向了7,两者交换//得到      1 9 3 7 5 6 4 8 2 10//此时的left还是小于right的,所以还是可以进入下一次循环//但是最后一次循环left指向了6,right指向了5,这时就要if判断一下来中断交换int tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;}}printf("\n");for (int i = 0;i < n;i++){printf("%d ", arr[i]);}return 0;
}

测试1:

测试2:

C语言:调整奇数偶数顺序相关推荐

  1. c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次

    [题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...

  2. 【C语言】调整奇数偶数顺序

    内容: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分. 解题思路: 一般情况下数组中可能是奇偶交替,而题目中让我们把奇 ...

  3. 调整奇数偶数顺序(C语言实现)

    题目描述: 写一个函数,该函数的功能:调整一个数组中数字的顺序,使得数组中所有的奇数位于所有偶数的前面. 思路: 1. 给定两个下标left和right,left放在数组的起始位置,right放在数组 ...

  4. c语言判断奇数偶数_使用C语言宏检查偶数或奇数

    c语言判断奇数偶数 There are many ways to check whether a given number is EVEN or ODD, which we have already ...

  5. 剑指offer之 调整奇数偶数数组位置

    package Problem14;/** 问题描述:* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位与数组的前半部分,所有偶数位与数组的* 后半部分*/ public cl ...

  6. 【C语言练习——调整数组内奇数偶数的顺序】

    调整奇数偶数顺序 前言 1.不改变元素顺序 2.改变元素的顺序 总结 前言 调整数组里的奇数偶数的顺序,使奇数全部都位于偶数前面. 1.不改变元素顺序 首先将奇数都调整到数组的前面 然后将偶数都调整到 ...

  7. java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...

    2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序             交换后链表的顺序 4→5→3→1→2   == ...

  8. 奇偶数分离c语言,如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序...

    导航:网站首页 > 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 相关问题: 匿名网友: imp ...

  9. 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)

    问题描述:将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转 示例: 交换前链表的顺序 交换后链表的顺序 4→5→7→1→6   ==>  1→7→5 ...

最新文章

  1. 分布式协议基础http协议
  2. Dubbo:Spring Cloud 服务调用的新选择
  3. 使用core data
  4. IntelliJ IDEA的使用操作链接
  5. Android --- android中Invalidate和postInvalidate的区别
  6. 牛客16437 买铅笔
  7. python函数示例_使用Python中的示例的input()函数
  8. mysql 前n个最大值_MySQL varchar计算:求列的数目和计算N的最大值
  9. 【转帖】Mysql多维数据仓库指南 第一篇 第1章
  10. 两位诺奖得主给“太上老君托梦”的天价白酒当首席科学家
  11. My97DatePicker时间控件在asp.net的应用
  12. 利用CA证书配置安全Web站点
  13. 苏雅欣课后作业四 个人总结
  14. L1-007 念数字(C语言)
  15. php生成订单 调微信支付,PHP后台微信支付使用方法
  16. SGVision与FX3U通讯
  17. android 照片墙程序,Android照片墙应用
  18. html如何让图片边缘模糊化,如何淡化图片周围区域?照片四周虚化怎么弄|最好的照片处理软件...
  19. android zxing生成条形码,用zxing生成没有白边的条形码
  20. Oracle去重查询实例

热门文章

  1. Flash 不缓存XML 数据 用时间戳getTime(非getTimer)抗拒缓存
  2. iOS开发68-iOS 如何让UIScrollView在手指离开后立即停止滑动
  3. 计算机组装与维护校本教材,《计算机组装及维护》校本教材.pdf
  4. 分享dedecms系统被挂黑链的几个原因
  5. npm WARN thinkjs-applicationxx No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDEN
  6. php 生存分析,KM-plotter在线做生存分析
  7. 论文笔记----Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
  8. 车辆识别——yolov5 + DeepSort_Pytorch
  9. Pandas+Pyecharts | 40000+条考研信息数据可视化(学校、专业分数分布)
  10. 安徽省省二计算机office,2020年安徽省计算机二级Office考试易考套餐:二级MS Office高级应用全程班(网课+题库)...