美文网首页
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