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];
}
}
}
剑指Offer_调整数组顺序使奇数位于偶数前面_13
最新推荐文章于 2025-06-07 20:51:44 发布
本文介绍了一种算法,用于调整整数数组中奇数和偶数的位置,确保所有奇数位于数组前半部分,所有偶数位于后半部分,同时保持它们内部的相对顺序不变。提供了两种方法:一种通过创建新数组来实现,另一种则采用类似插入排序的方法。
349

被折叠的 条评论
为什么被折叠?



