首页 > 试题广场 > 调整数组顺序使奇数位于偶数前面
[编程题]调整数组顺序使奇数位于偶数前面
  • 热度指数:851137 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
头像 牛客官方题解
发表于 2020-05-29 15:10:40
精华题解 描述 此题解是针对初学者的全面讲述,用三种方法来解决。知识点:数组难度:一星 题解 方法一:使用辅助数组 函数的类型为void func_name(array&),想让我们不开辟额外数组来解决,使用in-place就地算法。但是如果空间要求不高的话,我们还是可以开挂的。也就是开辟个额外数组 展开全文
头像 Ariser.cn
发表于 2019-08-21 16:37:38
思路:参考快速排序 i++往前走碰到偶数停下来,j = i+1 若 a[j]为偶数,j++前进,直到碰到奇数 a[j]对应的奇数插到a[i]位置,j经过的j-i个偶数依次后移 如果j==len-1时还没碰到奇数,证明i和j之间都为偶数了,完成整个移动 class Solution { p 展开全文
头像 PualrDwade
发表于 2019-09-12 17:54:37
一个很容易理解的解法,时间复杂度为o^2我们可以借鉴冒泡排序的特点,让偶数不断向右边移动,而冒泡的过程本身也可以保证相对顺序的不变,最后所有的偶数都移动到了右边,最坏情况下外层循环需要进行array.size()次。 class Solution { public: void reOrder 展开全文
头像 aidisen
发表于 2019-08-26 19:41:32
move elements public class Solution { public void reOrderArray(int [] array) { if(array==null || array.length ==0){ return ; 展开全文
头像 back201811142225988
发表于 2019-09-27 23:35:57
遍历数组,从0到n,如果是奇数,i++,如果是偶数,将这个偶数插入到数组末尾,然后删除这个偶数,同时n--,确保不会出现全是偶数的情况下死循环或者遍历到了新插入的偶数上。 # -*- coding:utf-8 -*- class Solution: def reOrderArray(self 展开全文
头像 Jalr4ever
发表于 2019-08-25 21:44:03
剑指 - 调整数组奇数位于偶数前 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 使用两个队列,一个存奇数,一个存偶数,然后依次将数赋值回原数组 总结 位运算的实 展开全文
头像 道阻且长z
发表于 2019-09-25 01:35:31
思路: 开辟新数组保存法:创建两个数组,一个用来存奇数,一个用来存偶数,最后合并。 不开辟新数组: 1.用两个下标i,j进行遍历; 2.当i走到偶数时停下,并让j从i的后一个元素开始遍历;(若i走到队尾则循环结束) 3.若j所指的是偶数则继续前进,j遇到奇数则停下(如果j都没遇到奇数则在队尾停 展开全文
头像 Johnnyhuang
发表于 2020-04-15 00:55:42
这道题很明显是利用排序算法解决实际问题的题由于要保证奇数和奇数,偶数和偶数之间的相对位置不变。即排序算法要具有稳定性: 冒泡,插入,并归,计数,基数,桶这里分别修改冒泡排序(20ms),插入排序(25ms),并归排序(14ms)来解决这个问题 1. 冒泡法 O(n^2) Java 20ms 这里考 展开全文
头像 BillyHao
发表于 2020-01-06 09:36:40
思路,把原数组分成一个奇数组一个偶数组,再按顺序复制回去,这样,只需要遍历两次原数组即可。(一次读出,一次写入)空间效率下降,因为额外有两个数组用于记录,但时间效率较好。 public void reOrderArray(int [] array) { //所以此时,这两个array长度都= 展开全文
头像 橙子爱吃桃子
发表于 2020-05-06 20:37:51
C++/代码: class Solution { public: void reOrderArray(vector<int> &array) { vector<int> array1,array2; int m = 0,n = 展开全文
头像 啊~我好菜啊
发表于 2019-09-03 16:35:54
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路思路1:开辟新的数组,遍历原数组将奇数偶数分别放在新的空间里,最后合并。时间复杂度O(n),开辟了额外的数组空间,空 展开全文