输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
//插入排序
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; //插入到正确位置
}
}
}
网友评论