每日算法之调整数组顺序使奇数位于偶数前面(二)(c语言将数组中的奇数偶数分别排序)

  本篇文章为你整理了每日算法之调整数组顺序使奇数位于偶数前面(二)(c语言将数组中的奇数偶数分别排序)的详细内容,包含有数组奇数在前偶数在后保持顺序 c语言将数组中的奇数偶数分别排序 数组奇数升序偶数降序 数组中奇数放在前面偶数放后面 每日算法之调整数组顺序使奇数位于偶数前面(二),希望能帮助你了解 每日算法之调整数组顺序使奇数位于偶数前面(二)。

  

输入一个长度为 n 整数数组,数组里面可能含有相同的元素,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,对奇数和奇数,偶数和偶数之间的相对位置不做要求,但是时间复杂度和空间复杂度必须如下要求。

 

  

 

  

既然要把所有的奇数放在数组前面,所有的偶数放在数组后面,那可以统计奇数在原数组中出现了多少次,这样就可以找到二者的分界线。有了分界线以后,前面就是奇数,后面就是偶数,可以利用两个指针分别指向二者的开头,遇到一个元素就添加到相应位置,然后指针移动。(该方法保证了相对位置不变)

 

  

 

  

public int[] reOrderArrayTwo (int[] array) {

 

   // write code here

   if (array.length = 0) return new int[0];

   int[] result = new int[array.length];

   int y = 0;

   for (int i = 0; i array.length; i++) {

   if (array[i] % 2 == 1) y++;

   int x = 0;

   for (int i = 0; i array.length; i++) {

   if (array[i] % 2 == 1) {

   result[x] = array[i];

   x++;

   if (array[i] % 2 == 0) {

   result[y] = array[i];

   y++;

   return result;

  

 

  

这道题不需要要求相对位置不变,因此我们可以采用位置交换的方法,只要奇数全部换到前面就可以了。利用左右双指针分别从数组首尾出发向中间走,交换其中的偶数在前奇数在后的情况。(该方法不能保证相对位置不变)

 

  

 

  

package esay.JZ81调整数组顺序使奇数位于偶数前面2;

 

  import java.util.*;

  
int[] arr = new int[]{1, 2, 3, 4};

   System.out.println(Arrays.toString(new Solution().reOrderArrayTwo(arr)));

  

 

  以上就是每日算法之调整数组顺序使奇数位于偶数前面(二)(c语言将数组中的奇数偶数分别排序)的详细内容,想要了解更多 每日算法之调整数组顺序使奇数位于偶数前面(二)的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: