【C语言】调整奇数偶数顺序
内容:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。
解题思路:
一般情况下数组中可能是奇偶交替,而题目中让我们把奇数全部挪到数组的前面,
偶数全部挪到数组的后面。
我们可以先从前往后找,碰到偶数停下。(如下图)
接下来我们从后往前找,碰到奇数停下。
当前后分别停下时,交换各自位置上的数。(交换过的数用 ‘ ’ 加以显示)
重复上述过程,左边找偶数,后面找奇数
找到就交换
当前后交替时,查找结束
以上就是大致思路,接下来我们开始代码实现。
我们可以定义两个变量left和right,left赋值为0,right赋值为数组的大小-1。
接下来left开始往数组后面进行查找,没有碰见偶数就++,碰见偶数就停下
while ((left<right)&&arr[left] % 2 != 0){left++;}
right也是一样,没有碰见奇数就++,碰见奇数就停下
while (arr[right] % 2 == 0){right--;}
当left和right都停下,并且left<right时就交换该位置数的大小
当left大于right时,数组中的奇数和偶数就相当于又交换了回去
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
我们可以运代码下查看以下结果
1.arr[]={1,2,3,4,5,6,7,8,9,10}
2.arr[]={1,3,5,7,9}
3.arr[]={2,4,6,8,10}
代码实现:
#include<stdio.h>
void move(int arr[], int sz)
{int left = 0;int right = sz - 1;while (left < right){while (arr[left] % 2 != 0){left++;}while (arr[right] % 2 == 0){right--;}if (left < right){int temp = arr[left];arr[left] = arr[right];arr[right] = temp;left++;right--;}}
}
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10};int sz = sizeof(arr) / sizeof(arr[0]);move(arr, sz);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}
【C语言】调整奇数偶数顺序相关推荐
- c语言智力题 操作符详解例题 数据存储 指针初阶 水仙花数 杨辉三角 逆序字符串 喝汽水问题 打印图形 猜凶手 使用指针打印数组内容 调整奇数偶数顺序 运动员猜名次
[题目名称] 下面代码的结果是:a #include <stdio.h> int i; int main() {i--; //sizeof'的返回值是无符号整型if (i > siz ...
- C语言:调整奇数偶数顺序
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序 来使得数组中所有的奇数位于数组的前半部分.所有的偶数位于数组的后半部分. 比如现在有数组arr: 1 2 3 4 5 6 思路1:大部分同学第 ...
- 调整奇数偶数顺序(C语言实现)
题目描述: 写一个函数,该函数的功能:调整一个数组中数字的顺序,使得数组中所有的奇数位于所有偶数的前面. 思路: 1. 给定两个下标left和right,left放在数组的起始位置,right放在数组 ...
- c语言判断奇数偶数_使用C语言宏检查偶数或奇数
c语言判断奇数偶数 There are many ways to check whether a given number is EVEN or ODD, which we have already ...
- 剑指offer之 调整奇数偶数数组位置
package Problem14;/** 问题描述:* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位与数组的前半部分,所有偶数位与数组的* 后半部分*/ public cl ...
- 【C语言练习——调整数组内奇数偶数的顺序】
调整奇数偶数顺序 前言 1.不改变元素顺序 2.改变元素的顺序 总结 前言 调整数组里的奇数偶数的顺序,使奇数全部都位于偶数前面. 1.不改变元素顺序 首先将奇数都调整到数组的前面 然后将偶数都调整到 ...
- java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...
2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序 交换后链表的顺序 4→5→3→1→2 == ...
- 奇偶数分离c语言,如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序...
导航:网站首页 > 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 如何把一个整型数组中,奇数偶数进行分离 怎么使数组进行奇偶奇偶相间排序 相关问题: 匿名网友: imp ...
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
问题描述:将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转 示例: 交换前链表的顺序 交换后链表的顺序 4→5→7→1→6 ==> 1→7→5 ...
最新文章
- python 习题集锦
- SwiftUI编辑文字和图片
- 用树莓派的方式打开小米手机:摇晃手机控制小车,前进后退加转弯,成本不到350元 | 开源...
- 关于uWSGI服务器的安装和启动(一)
- MySQL集群中主从切换
- 好程序员Web前端分享程序的三大结构(二)while循环
- chrome浏览器,开发工具一些常用快捷键
- mysql的txid是什么_mysql-存储引擎
- 微信开发工具获取用户头像和用户昵称,实现本地和真机调试
- excel一列求和_学会这15组Excel函数,解决数据分析中80%的难题
- IDEA打包失败解决方案
- javaScript开源大全
- 辅助驾驶功能开发-功能规范篇(05)-智能限速辅助SLA
- 走进区块链 | 巴比特2020校招正式开启
- Matlab画圆方向图,如何在matlab里画天线的立体方向图?
- linux驱动文件目录
- 电商平台促销管理功能解析,数商云S2B2C商城系统开启日化行业数字零售新模式
- Windows CMD命令大全(值得收藏)
- Django中的DateTimeField和DateField
- 维护盘pe linux,不进入pe系统也能轻松维护硬盘,简直神器!
热门文章
- html 有条件显示标签,HTML的标签大全
- ZZ:浅析iPhone 5s、Ascend P7、小米3系统架构
- 要闻君说:国内首个5G电话由中国移动在京被打通!360公司转让奇安信股权;腾讯宣布开源三大开发工具 ,紧追技术共享步伐;...
- Python+selenium自动循环扔QQ邮箱漂流瓶
- h5 无障碍_5g及其障碍
- 狙击小米+高通?余承东为首款7nm麒麟980打Call!
- Google资深工程师深度讲解Go语言11-http及其他标准库
- 写出在桌面上显示计算机的操作步骤,怎样让便签在Windows电脑桌面屏幕上一直显示?具体操作步骤是什么...
- js正则验证手机号,支持移动、电信、联通
- 微信小程序预览二进制流文件