美文网首页
Day13 剑指offer:数组掉序

Day13 剑指offer:数组掉序

作者: zheng7 | 来源:发表于2017-08-10 11:12 被阅读0次

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

    //插入排序
    public class Solution {
        public void reOrderArray(int [] array) {
            for(int i= 1; i<array.length; i++){
                if(array[i] %2 == 1 ){  
                    int j= i-1; 
                    int x = array[i]; 
                    while(j>=0 && array[j] % 2 == 0){  //查找在有序表的插入位置  
                        array[j+1] = array[j];  
                        j--;         //元素后移  
                    }  
                    array[j+1] = x;      //插入到正确位置 
                } 
            } 
        }
    }
    

    当相等时向后插入的插入排序是稳定的。

    //插入排序  
    void InsertSort(int a[], int n)  
    {  
        for(int i= 1; i<n; i++){  
            if(a[i] < a[i-1]){               //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入  
                int j= i-1;   
                int x = a[i];        //复制为哨兵,即存储待排序元素 
                while(x < a[j]){  //查找在有序表的插入位置  
                    a[j+1] = a[j];  
                    j--;         //元素后移  
                }  
                a[j+1] = x;      //插入到正确位置  
            }  
        }  
          
    }  
    

    相关文章

      网友评论

          本文标题:Day13 剑指offer:数组掉序

          本文链接:https://www.haomeiwen.com/subject/dwocrxtx.html