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

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

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。


自己思路:

感觉这是直接一眼想到的思路。有什么错误求指正!!谢谢
使用列表存储偶数,然后把所有奇数顺序移到数组前面,剩余空间放入列表中的偶数。时间复杂度是O(n),空间复杂度也是O(n)
(空间复杂度应该可以优化,先判断一下奇数多还是偶数多,然后使用列表存储少的数,这样空间复杂度最坏是O(n/2))。

 public void reOrderArray(int [] array) {

        int count =0 ;
        List<Integer> list = new ArrayList<>();

        for(int i =0 ;i<array.length ;i++){
            if(array[i]%2 == 0){
                list.add(array[i]);
            }
            System.out.println(list);
        }
        for(int i =0 ,j =0 ;i<array.length;i++){
            if(array[i]%2!=0){
                array[j] = array[i];
                j++;
                count++;
            }

        }
        for(int i : list){
            array[count] = i;
            count ++;
        }
    }

较优解法:

类似于冒泡的思想,前偶后奇数就交换

public class ReOrderArray {
    public static void reOrderArray(int [] array) {

        for(int i = 0 ;i<array.length ;i++){
            for(int j = array.length-1 ; j > i ;j--){
                if(array[j-1] % 2 == 0 && array[j]%2 != 0){
                    swap(array , j , j-1);
                }
            }
        }
    }

    public static void swap(int[] arr , int index1 , int index2){
        int temp  = arr[index1];
        arr[index1] = arr[index2];
        arr[index2] = temp;
    }
}
【CAN总线测试】——通讯相关诊断测试 本章主要介绍通讯相关诊断测试用例设计 阅读详情

相关推荐

Claude AI实战指南:从注册到精通,突破手机验证的终极解决方案

本文提供了一份详尽的Claude AI实战指南,重点解决了国内用户注册过程中的手机号验证难题,并分享了使用技巧。文章详细介绍了如何通过虚拟手机号服务等方案完成注册,并深入解析了Opus、Sonnet、Haiku三大模型的特点与选择策略,帮助用户从注册到精通,高效利用这一安全、健谈的AI助手进行内容创作、编程开发与学习研究。

weixin_29092031的博客 1235

2.有一个整数数组a,设计一个算法,将所有偶数位的元素移到奇数位的元素的前面,要求它们的相对次序不变。 样例:a={1,2,3,4,5,6,7,8},移动后变为a={2,4,6,8,1,3,5,7}

#include #define Maxsize 50 using namespace std; template class SqQueue { public: T *data; int front,rear; SqQueue() { data=new T[Maxsize]; front=0,rear=0; } ~SqQueue() { delete [] data; } bool empty() { return rearfront; } bool Max()//判满 { return (rear+

qq_50571495的博客 3061

企业级防火墙实战:用深信服AF8.0打造安全办公网络(含流控/僵尸防护配置)

本文详细介绍了如何利用深信服AF8.0防火墙构建企业级安全办公网络,涵盖设备初始化、多接入方式配置、三维一体安全防护体系(包括应用控制、僵尸防护和智能流控)以及典型问题排查。通过实战案例和配置模板,帮助IT管理员高效部署和优化网络安全管理,提升企业网络安全防护能力。

weixin_28716443的博客 282

【数据结构与算法】【考研】(三):线性表——顺序表编程练习题

分析首先将数组中的值存到x中,通过判断实现去重写入,而关于a和b数组谁先遍历完成的问题,假设a先遍历完成,那么j=m,会一直写入a数组,直到i==n,不在进入循环。分析虽然说是前半段和后半段互换,其实是将前半段移动到了后面,可以采取一个一个移动的办法,也可以采取我下面这个,将整个数组逆置,此时咱们想要的前半段,已经到了后面,只不过顺序仍然是反的,再将前半段后后半段分别翻回来就可以了。...

qq_53690996的博客 1384

从东南大学906被刷到调剂过程(内含个人感想)

介绍了自己在看到初试成绩,到后期复习以及调剂的全过程,当中也包含了自己的复试中的感想,希望大家理性看待。

Philo的博客 2857

在不同版本Python中安装PyQT5及PyQT5-Tools

在不同版本Python中安装PyQT5及PyQT5-Tools

zoomgu680的博客 2万+

数据结构|设计一个算法,将顺序表的所有奇数移动到偶数的前面

法2:可以从两端开始扫描,如果左边扫描的元素为奇数,则跳过,如果右边扫描的元素为偶数,则跳过,直到左边找到偶数,右边找到奇数,让这两个数交换。法1:可以从头扫描顺序表的元素,当扫描到该元素为奇数,让k++,奇数区间+1(k初始值为-1),然后让该元素与L->data[i]交换。设计一个算法,将顺序表的所有奇数移动到偶数的前面。

大胆尝试,小心实践 3989

计算机视觉与深度学习 | 2024年至2025年图像匹配算法总结(原理,公式,代码,开源链接)

以上总结覆盖了当前主流和前沿技术,实际选择需结合具体场景(速度/精度/资源限制)评估。

尘世冰封的专栏 1594

python自定义一个函数求序列中的偶数_Python高阶函数使用总结!

本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是:mapreducefiltersorted/sortzip一、map1.1 语法map函数的基本语法是map(func, seq),其含义指的是:对后面可迭代序列中的每个元素执行前面的函数func的功能,最终获取到一个新的序列。注意:Python2中直接返...

weixin_33293612的博客 3216

打开电脑自动弹窗问题:无法为文件‘D:\Config.Msi\*.rbf‘设置文件安全。错误:5。请确认...如何解决?| 提供多种解决方案,亲测有效!

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2916

YOLOv11【第二十章:模型迭代与生态闭环篇·第1节】在线增量学习——部署后新数据自动回流重训!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 433

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

题目:输入一个整数数组,实现一个函数来调整数组中数字的顺序,是得所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。分析最简单的办法就是开辟和原数组同样大小的空间,顺次扫描原数组2次,第一次将所有奇数放进新数组中,第二次将偶数放入就可以。这种方法的时间复杂度为O(n),空间复杂度为O(n)。代码如下: void ReorderOddEven(vector<int>& arr) { ve

Smart的专栏 3654

【FISCO BCOS】二十、多机部署区块链

实际开发中,为了满足高可用性和高容错性的需求,往往会采用多级部署区块链的方式,今天介绍一下FISCO BCOS的多机部署流程。

naihe_fish的博客 3656

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

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

weixin_63449996的博客 1129

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

larklili的博客 174

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

julian_draxler的博客 798

剑指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] 也是正确的答案之一。 解题过程: 第一次: 使用两个数组分开存,然后再合并。天真的我以

学而不思则忘 340

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

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

RowandJJ 1264

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

牛客 剑指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的博客 256

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

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 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
上一篇: 单例模式
下一篇: 从上往下打印二叉树
coder_flag
博客等级 码龄9年 2粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值