调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面(保持原有元素的相对顺序) 问题描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解法1:使用两个队列,分别保存原数组的奇数元素和偶数元素,然后合并到原数组中。 void reOrderArray(vector<int> &array) { if (array.size(... 阅读详情

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。

分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位。由于碰到一个偶数,需要移动O(n)个数字,因此总的时间复杂度是O(n2)。

要求的是把奇数放在数组的前半部分,偶数放在数组的后半部分,因此所有的奇数应该位于偶数的前面。也就是说我们在扫描这个数组的时候,如果发现有偶数出现在奇数的前面,我们可以交换他们的顺序,交换之后就符合要求了。

因此我们可以维护两个指针,第一个指针初始化为数组的第一个数字,它只向后移动;第二个指针初始化为数组的最后一个数字,它只向前移动。在两个指针相遇之前,第一个指针总是位于第二个指针的前面。如果第一个指针指向的数字是偶数而第二个指针指向的数字是奇数,我们就交换这两个数字。

 

java代码

 

public class Test_29 {
	public static void main(String[] args){
		int[] arr = {2,1,6,5,8,9,3,6,5,7};
		Reorder(arr);
		for(int i=0;i<arr.length;i++){
			System.out.print(arr[i]+",");
		}
	}
	//判断n是否为偶数,偶数返回true,奇数返回false
	public static boolean isEven(int n ){
		if(n%2==0){
			return true;
		}
		else 
			return false;
	}
	public static void Reorder(int[] arr){
		if(arr == null){
			return ;
		}
		int small = 0;
		int big = arr.length-1;
		while(small<=big){
			if(!isEven(arr[small]))small++;
			if(isEven(arr[big])) big--;
			if(isEven(arr[small])&&!isEven(arr[big])){
				int temp = arr[small];
				arr[small] = arr[big];
				arr[big] = temp;
			}
		}
	}

}


 

输出结果

7,1,5,5,3,8,9,6,6,2,

 

波分复用-Zblock仿真 Z-BLOCK是一种用于光通信模块的光学元件,其核心结构是在玻璃块一侧贴有4个特定波长滤光片,另一侧镀有反射膜和增透膜。光信号在内部呈现Z字形反射路径,实现波长分离。文章以可见光LED为例,在ZEMAX中演示了非序列模式下的建模过程,重点介绍了滤光片和膜层的参数设置方法。需要注意的是,入射角度需根据玻璃折射率、通道高度和厚度精确计算,否则可能导致光泄漏。该建模方法同样适用于光通信中的光纤激光器系统。 阅读详情

相关推荐

每天一个优秀提示词学习收藏 - 文本去AI化(四)

宝子们,今天不藏私啦!我把这段时间四处搜罗、潜心钻研出来的文本去AI化Prompt 提示词大礼包双手奉上,这可都是能让你的 AI 创作水平原地起飞的干货!走过路过不要错过,赶紧码住,开启你的 AI 创作进阶之旅吧!

2447

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面

package com.sort; //输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面 public class Test1 { public static void main(String args[]) { int a[] = { 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 14, 11 }; int n = 12; System.out

zjcheer_up的专栏 1882

别再只会用Excel了!Minitab 21手把手教你搞定SPC控制图(从数据导入到结果解读)

本文详细介绍了如何使用Minitab 21高效制作SPC控制图,从数据导入到结果解读的全流程。通过对比Excel的局限性,展示Minitab在自动化计算、图表标准化和特殊原因检验等方面的优势,帮助质量管理人员提升工作效率和数据分析专业性。

weixin_30878501的博客 386

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所 有偶数位于数组的后半部分。要求时间复杂度为O(n)。

/* copyright@nciaebupt 转载请注明出处 题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所 有偶数位于数组的后半部分。要求时间复杂度为O(n)。 分析:如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每碰到一个偶数时, 拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有 一个空位,这时把该偶数放入这个空位。

nciaebupt 4558

SolidWorks与Python二次开发实战:从宏录制到自动化脚本

本文详细介绍了利用Python对SolidWorks进行二次开发的实战方法。通过宏录制获取操作指令,再将其转换为Python脚本,工程师可以高效实现建模、出图等重复任务的自动化,显著提升设计效率。文章涵盖了环境搭建、代码转换、调试技巧及完整实战案例,为工程师提供了从入门到精通的完整路径。

weixin_29082143的博客 948

长期换衣行人重识别(Long-Term Clothes-Changing Person Reid)数据集汇总

长期换衣行人重识别任务中目前常用的数据集总览目前换衣数据集的主要问题数据集换衣/总体情况集统计DeepChange(2021)LaST(2021)COCAS(2020)VC-Clothes(2020)LTCC(2020)PRCC(2019)Celebrities-reID(2019) 总览 在长期换衣行人重识别的任务当中,数据集的获取(尤其是对于学术环境下)是一个难点,主要的困难有以下几点: 采集大规模的数据集比较困难。 采集不同的衣服的数据集比较困难。 采集不同衣服不同角度的数据集比较困难。 目前也有

KingsMan666的博客 8384

剑指offer:调整数组顺序使奇数位于偶数前面

题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路: 如果不要求数组相对位置不变,可以设置头尾两个指针完成交换,具体思路及代码见文末。但是这里显然不能用。 方法1. 用两个数组分别存储下奇数和偶数,然后按照先奇数后偶数的顺序将其放入原来的数组。缺点是需要两...

u012991043的博客 1000

YOLO26涨点改进 | 全网独家创新,注意力改进篇| SCI一区Top | 引入AFCA自适应细粒度通道注意力,联合建模全局与局部通道依赖关系,适合目标检测、图像去雾、关键点检测、图像分类、图像分割

🔥本文提出了一种基于AFCA(自适应细粒度通道注意力)模块改进的YOLO26目标检测网络。AFCA通过联合建模全局与局部通道依赖关系,实现了更精细的通道注意力分配,能够增强目标相关特征并抑制背景噪声。该模块采用自适应融合策略动态平衡通道权重,在保持轻量级结构的同时,显著提升了小目标和复杂背景下的检测性能。文章详细介绍了AFCA的结构原理、实现优势,并提供了完整的代码实现和YAML配置文件,指导读者如何将该模块集成到YOLO26框架中。实验结果表明,AFCA在检测精度和鲁棒性方面优于传统注意力机制。

Ai缝合怪、助力小伙伴高效发论文 305

面试题21:调整数组顺序,使奇数位于偶数前面

/*  * 面试题21:调整数组顺序,使奇数位于偶数前面  * 输入一个整数数组,实现一个函数来调整数组中数字的顺序,使得所有的奇数位于偶数的前半部分,  * 所有偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。  */ public class No21ReorderArray {     public static void main(String[] a...

juaner1993的博客 170

【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

Handler如果没有消息处理是阻塞的还是非阻塞的? Looper 为什么要使用死循环? Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

字节卷动 760

【推荐100个unity插件】unity实现交互式火焰 —— Ignis

Ignis是一款Unity互动式消防系统插件,可轻松将物体转换为可燃物。支持固体、植被、蒙皮网格和地形树木等多种对象类型,提供火焰蔓延、熄灭等效果。安装需通过Unity Package Manager添加Visual Effects Graph,并按照指引转换目标物体材质。使用盒型碰撞体或网格计算燃烧区域,可自定义火焰参数和视觉效果。内置多种转换选项,如Flammable Vegetation、Flammable Skinned Mesh等,适用于不同场景需求。注意使用前需备份材质和地形数据,并提供性能优化

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2240

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

1.调整数组使奇数全部都位于偶数前面。 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 **解题思路:**循环的次数是一个问题,在交换完两个数之后应该再循环这个数,判断是不是偶数,当是偶数继续循环,如果循环退出条件为数组长度,最终循环完成会把偶数又换回到数组的前半部分,所以循环的退出条件也应该一起控制 int...

a_hang_szz的博客 668

9.23华为OD机试真题 新系统 - 世界杯徽章换购 (Java/Py/C/C++/Js/Go)

9.23华为OD机试真题 新系统 - 世界杯徽章换购 (Java/Py/C/C++/Js/Go)

算法大师! 1616

【剑指offer】调整数组顺序使奇数位于偶数前面

剑指offer题解:调整数组顺序使奇数位于偶数前面

weixin_63449996的博客 1129

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

剑指offer-调整数组顺序使奇数位于偶数前面

7.调整数组顺序使奇数位于偶数前面 题目内容: 代码及思路: 1.用最基础的遍历的方式,即遍历数组若是奇数则取出,偶数后之。 #include<iostream> #include<vector> using namespace std; class solution { public: void reorderarray(vector<int>...

larklili的博客 174

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python数组排序奇数在前偶数在后_调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面C++ Solution1class Solution {public:void reOrderArray(vector &array) {for (int i = 0; i{for (int j = array.size()-1; j>i; j--){if ((array[j] & 0x01) == 1 && (array[j...

weixin_39886251的博客 1228

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

调整数组顺序让奇数位于偶数前面

牛客 剑指offer.JZ13调整数组顺序让奇数位于偶数前面一、思路分析二、代码实现1.代码如下2.知识点补充 调整数组顺序让奇数位于偶数前面 一、思路分析 题意:区分出奇数和偶数,按照原顺序奇数偶数顺序不变 我的思路:开辟两组新的空间,我这里用的是LinkedList,因为想要用到队列的先进先出方法 1、先找出奇数利用2余某个数不为零就是奇数(这里不考虑0的情况),那么余2是0那就是偶数啦 2、然后奇数放在一个链表里面,偶数放在一个链表里面。链表不需要事先知道长度大小,所以用链表方便,数组是没法确定大

weixin_43558210的博客 369

牛客网&剑指Offer&调整数组顺序使奇数位于偶数前面

牛客网&剑指Offer&调整数组顺序使奇数位于偶数前面 代码实现1 class Solution { public: void reOrderArray(vector<int> &array) //引用array数组 { if(array.empty()) //empty()作为判断容器是否为空的函数,若为空则为true r...

weixin_42060900的博客 255

js剑指offer-13-调整数组顺序使奇数位于偶数前面

剑指offer13-调整数组顺序使奇数位于偶数前面 题目描述   输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 const reOrderArray = array =&gt; { const jishu = []; const oushu = []; ...

julian_draxler的博客 798

调整数组顺序使得奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。 代码: /* 调整数组顺序使得奇数位于偶数前面 by Rowandjj 2014/8/1 */ #include #include using namespace std; //高效解法,但会调整后的数组元素相对顺序会发生改变 void func(int *

RowandJJ 1264

剑指Offer.21——调整数组顺序使奇数位于偶数前面

题目链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 解题过程: 第一次: 使用两个数组分开存,然后再合并。天真的我以

学而不思则忘 339

【数组】调整数组顺序使奇数位于偶数前面

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 import java.util.LinkedList; public class Solution { public void reOrderArray(int [] array) { ...

永生只是一场幻梦 2833

剑指Offer_21_调整数组顺序使奇数位于偶数前面

package 二刷; /** * https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ * * @author Qitong!! * @Date 2020/7/2 */ public class 剑指Offer_21_调整数组顺序使奇数位于偶数前面 { public int[] exchange(int[] nums) { /

qitong啊的博客 480
上一篇: 字符串的排列
下一篇: 快速排序算法是不稳定的算法
tanyujing
博客等级 码龄18年 135粉丝 91原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值