package code;
//题目描述:调整数组顺序使奇数位于前面
//输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
//使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,
//并保证奇数和奇数,偶数和偶数之间的相对位置不变。
//本来想改写快排patation部分的,后面写着写着发现快排是不稳定的。
//解法一:直接创建一个数组,遍历原数组,将奇数填进新数组,
//再遍历原数组,把偶数填进新数组,最后用新数组覆盖原数组
//解法二:参考插入排序,将奇数往前移
//
public class Offer13
{
public static void main(String[] args)
{
Offer13 offer = new Offer13();
int[] array = {1,2,3,4,5,6,7,8,9,10};
offer.reOrderArray(array);
for(int i = 0; i < array.length; i++)
{
System.out.print(array[i]);
}
}
public void reOrderArray2(int[] array)
{
if(array == null || array.length < 2)
return;
for(int i = 1; i < array.length; i++)
{
if(array[i] % 2 == 0)
continue;
for(int j = i; j > 0; j--)
{
if(array[j-1] % 2 == 0)
{
int tmp = array[j];
array[j] = array[j-1];
array[j-1] = tmp;
}
}
}
}
public void reOrderArray(int[] array)
{
if (array == null || array.length < 2)
return;
int[] re = new int[array.length];
int ptr = 0;
for (int i = 0; i < array.length; i++)
{
if (array[i] % 2 == 1) {
re[ptr] = array[i];
ptr++;
}
}
for (int i = 0; i < array.length; i++)
{
if (array[i] % 2 == 0) {
re[ptr] = array[i];
ptr++;
}
}
for (int i = 0; i < array.length; i++)
{
array[i] = re[i];
}
}
}