首页 > 其他分享 >调整数组顺序使奇数位于偶数前面

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

时间:2024-12-08 15:31:45浏览次数:5  
标签:arr 奇数 int ArrayUtil 偶数 数组

题目

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

解法

双指针i和j
指针i起点是数组起点,当i检测到偶数时停下。j的起点时数组终点,当j检测到奇数时停下,交换i和j处的元素。
在这里插入图片描述
如图,2和9交换。

package com.company;

import com.company.util.ArrayUtil;

import java.util.Arrays;

public class Test20 {
    public static void main(String[] args) {
//        int[] arr={1,	2,	3	,4	,5,6,7,8,9,10};
        int[] arr = ArrayUtil.randomArray(0, 11, 10);

        int j=arr.length-1;
        for (int i=0;i<j;i++){
            if(arr[i]%2==0){

                while(j>i){
                    if(arr[j]%2==1){

                        ArrayUtil.swap(arr,i,j);
                        break;
                    }
                    j--;
                }
            }

        }
        System.out.println(Arrays.toString(arr));
    }
}

标签:arr,奇数,int,ArrayUtil,偶数,数组
From: https://blog.csdn.net/zhourongxiang1/article/details/144326339

相关文章

  • 从最浅层剖析C语言————第六节(深入了解数组传参、嵌套调用以及链式访问)
    目录 1.前情提要2.return语句3.数组作为函数参数4.嵌套调用和链式访问4.1函数的嵌套调用4.2链式访问 1.前情提要前面我们讲到了函数里面的形参和实参的概念,形参顾名思义就是一个形式上的参数,不参与实际的运算,而实参则刚好相反但是实参是需要传递给形参的,他......
  • 集合的介绍以及与数组的使用选择
    1.集合介绍关于容器,我们学过两个,一个是StringBuilder,另一个就是数组,在这里,数组的功能似乎与集合更相近,那我们为什么还要学习集合?我们引用一个例子进行解释,如图,假如我们买了三样东西,并将它们用容器装起来如果我们用的是数组装,那么长度就固定了,假如我们突然又想买第四个东西,那......
  • C++ 数组内存申请和释放、引用
    在C++中如何实现对数组内存的申请和释放呢?同样使用关键字new、delete,可见以下代码例子:#include<iostream>usingnamespacestd;int*getGapList(int*arr,intsize){   int*p=newint[size-1];//这里需要申请一个数组对应的内存,就可以返回去   for(inti......
  • leetcode 1493. 删掉一个元素以后全为 1 的最长子数组
    1493.删掉一个元素以后全为1的最长子数组法一:递推classSolution{public://在删掉元素的结果数组中,最长的且只包含1的非空子数组存在两种情况://1.这个子数组在原数组中本身就是连续的,无论删或者不删其他的元素,它都是最长的且只包含1的非空子数组;//2.这个子数组原......
  • 【C语言】--关于数组的一系列问题,看这篇就够了
    前言:在C语言中,数组是一种极为重要的数据结构,它为储存和处理多个相同类型的数据元素提供了便携而高效的方式。无论是处理简单的数值序列还是复杂的数据集合,数组都扮演着不可或缺的角色。下面,就跟博主一起来看看数组的一系列问题吧!文章目录:1.数组是什么?2.一维数组2.1......
  • 写一个方法判断数组内元素是否全部相同
    functionareAllElementsEqual(arr){if(!arr||arr.length===0){returntrue;//Emptyornullarrayisconsideredtohaveallelementsequal}constfirstElement=arr[0];for(leti=1;i<arr.length;i++){if(arr[i]!==firs......
  • 使用delete删除数组,其长度会改变吗?
    在JavaScript中,使用delete操作符删除数组元素不会改变数组的长度。它会在被删除元素的位置留下一个空洞,用undefined表示。例如:letarr=[1,2,3,4,5];deletearr[2];//删除索引为2的元素(值是3)console.log(arr);//输出:[1,2,<1emptyitem>,4,5]cons......
  • 【C++算法】31.前缀和_连续数组
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:525.连续数组题目描述:解法前缀和思想:如果把0变成-1,那么就是在区间内找一个最长的子数组,使得子数组中所有元素的和为0前面做过一个前缀和为k的子数组,这里就是转化为和为0。前缀和+哈希表哈希表里......
  • Golang教程第16篇(语言数组)
    Go语言数组Go语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。相对于去声明number0,number1,…,number99的变量,使用数组形式numbers[0],numbers[1]…,......
  • 并发编程系列---【数组切割并行查询-解决sql的in超过1000的问题】
    1.问题List<List<Object>>splitList=CollUtil.split(dataList,800);List<User>resultList=newArrayList<>();//使用parallelStream输出切割后的结果,每个子列表的大小splitList.parallelStream().forEach(sublist->{List<User>users=userMa......