zoukankan      html  css  js  c++  java
  • 调整数组顺序使奇数位于偶数前面 --剑指offer

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

    方法1:

    开辟另一个数组,对原有的数组扫描两次,第一次扫描往新的数组中放奇数,第二次放偶数。

    public class Solution {
        public void reOrderArray(int [] array) {
            int[] tem=new int[array.length];
            int j =0;
            for(int i =0;i<array.length;i++){
                if((array[i]&1) != 0){
                    tem[j++]=array[i];
                }
            }
            for(int i =0;i<array.length;i++){
                if((array[i]&1) == 0){
                    tem[j++]=array[i];
                }
            }
            for(int i=0;i<array.length;i++){
                array[i]=tem[i];
            }
        }
    }

    方法2:用两个标志odd,even,都指向0位置。even从0开始往后移动,遇到偶数继续移动,奇数则停下 和odd换位置 并把odd和even中间的元素依次向后移动,这样做的目的是防止相对位置改变;

    public class Solution {
        public void reOrderArray(int [] array) {
            int odd=0,even=0;
            while(even < array.length){
                int tem;
                if((array[even]&1) !=0){ //遇到奇数则交换位置
                    tem=array[even];
                    for(int i =even;i>odd;i--){//中间的元素向后挪动
                        array[i]=array[i-1];
                    }
                    array[odd]=tem;
                    odd++;
                    even++;
                }
                else{
                    even ++;
                }
            }
        }
    }
  • 相关阅读:
    Count_sort C++
    Priority_Queue C++
    HeapSort C++
    Randomized_QuickSort C++
    QuickSort c++
    我的开发环境
    github and eclipse
    centos 7 install eclipse cdt and use github
    github commands
    文化-梁晓声
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12420771.html
Copyright © 2011-2022 走看看