调整奇数偶数顺序

embedded/2024/11/14 6:19:48/

 题目:

输入一个整数数组,实现一个函数,

来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,

所有偶数位于数组的后半部分。

思路一:

可以重新开辟一个数组,然后将原有的数组遍历,先把奇数拷贝到新的数组,然后再把偶数拷贝。

源码:

int main()
{int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };int cnt = 0;int arr2[10] = { 0 };for (int i=0;i<10;i++){if (arr1[i] % 2 == 0)arr2[cnt++] = arr1[i];}for (int i=0;i<10;i++){if (arr1[i] % 2 != 0)arr2[cnt++] = arr1[i];}for (int i=0;i<10;i++){printf("%d ", arr2[i]);}return 0;
}

运行结果:

思路二:

1. 给定两个下标left和right,left放在数组的起始位置,right放在数组中最后一个元素的位置
2. 循环进行一下操作a. 如果left和right表示的区间[left, right]有效,进行b,否则结束循环b. left从前往后找,找到一个偶数后停止c. right从后往前找,找到一个奇数后停止d. 如果left和right都找到了对应的数据,则交换。

相比思路一,空间复杂度降低了不少(因为不用再创建一个新的数组)

源码:

int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int left = 0;int right = sizeof(arr) / sizeof(arr[0])-1;int i = 0;int j = 0;while (left <= right){for (i=0;i<10;i++){if (arr[i] % 2 == 0){left = i;break;}}for (j=right;j>0;j--){if (arr[j] % 2 != 0){right = j;break;}}if (left <= right){int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}}for (i=0;i<10;i++){printf("%d ", arr[i]);}return 0;
}

 运行结果:


http://www.ppmy.cn/embedded/116154.html

相关文章

03-Docker下载加速

03-Docker下载加速 docker下载加速 方式1&#xff1a;使用 网易数帆、阿里云等容器镜像仓库进行下载。 网易数帆官网&#xff1a;https://sf.163.com/ 例如&#xff0c;下载网易数帆镜像中的mysql。&#xff08;网易数帆的地址为 hub.c.163.com&#xff0c;网易数帆对dockerh…

卡牌抽卡机小程序:市场发展下的创新

今年以来&#xff0c;卡牌成为了行业中的黑马&#xff0c;在国内迅速流行&#xff0c;成为消费者的心头好。小小的卡牌创下了百亿的市场规模&#xff0c;发展前景巨大&#xff01; 不过&#xff0c;随着卡牌市场的不断增长&#xff0c;市场发展也需要进行创新。线上抽卡机小程…

足球预测模型理论:足球数据分析——XGBoost算法实战

简介&#xff1a;本文将探讨如何使用XGBoost算法进行足球数据分析&#xff0c;特别是足球运动员身价估计。我们将通过实例和生动的语言&#xff0c;解释XGBoost算法的原理和实际应用&#xff0c;帮助读者理解复杂的技术概念&#xff0c;并提供可操作的建议和解决问题的方法。 足…

Docker Redis 7.2.3 部署

配置文件 # Redis 7.2.3 配置文件# 绑定IP地址&#xff0c;允许其他IP访问 # 默认情况下&#xff0c;Redis只绑定到127.0.0.1本地回环地址 # 如果需要让其他IP访问&#xff0c;注释掉或修改绑定的IP地址 # 例如&#xff0c;允许所有IP访问&#xff0c;可以注释掉bind行&#x…

鸿蒙OpenHarmony【轻量系统内核通信机制(互斥锁)】子系统开发

互斥锁 基本概念 互斥锁又称互斥型信号量&#xff0c;是一种特殊的二值性信号量&#xff0c;用于实现对共享资源的独占式处理。 任意时刻互斥锁的状态只有两种&#xff0c;开锁或闭锁。当任务持有互斥锁时&#xff0c;该互斥锁处于闭锁状态&#xff0c;这个任务获得该互斥锁…

Redis——笔记01

一、Redis简介 1.1 NoSQL NoSQL(Not Only SQL)&#xff0c;意为“不仅仅是SQL”&#xff0c;是一项全新的数据库概念&#xff0c;泛指非关系型的数据库&#xff0c;随着互联网web2.0网站的兴起&#xff0c;传统的关系数据库再应付web2.0网站&#xff0c;特别是超大规模和高并…

数字世界的新秩序:探索Web3的前景

在过去的几十年中&#xff0c;互联网已经彻底改变了我们的生活方式&#xff0c;推动了信息共享、全球互联以及数字经济的快速发展。然而&#xff0c;当前的互联网架构主要是中心化的&#xff0c;由少数大型科技公司控制数据、服务和基础设施。这种模式虽然高效&#xff0c;但也…

java中的位运算

位运算是对整数的二进制位进行操作的一种运算。在java中long, int, short, char和byte类型都可以使用位运算。 位运算的过程如下&#xff1a;首先将十进制整数转换成二进制表示形式&#xff0c;然后将位运算符应用于每个二进制数位&#xff0c;并计算结果。最后&#xff0c;将…