题目
输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有的奇数位于数组的前半部分,偶数位于数组的后半部分。
解决方案
这类问题的处理思路可以考虑:头尾指针
数组中维护两个指针,第一个指针初始化时候指向数组头部,第二个指针初始化时候指向数组尾部,第一个指针指向的数字总是偶数,第二个指针指向的数字总是奇数,如果第一个指针在第二个指针之前,则交换两指针指向的元素。
public class Solution {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Solution.reorderArray(array);
System.out.println(Arrays.toString(array));
}
public static void reorderArray(int[] array) {
if (array == null || array.length <= 0)
throw new RuntimeException("invalid array");
int begin = 0;
int end = array.length - 1;
while (begin < end) {
while (begin < end && (array[begin] & 1) != 0) {
//奇数
begin++;
}
while (begin < end && (array[end] & 1) == 0) {
//偶数
end--;
}
if (begin < end) {
int temp = array[end];
array[end] = array[begin];
array[begin] = temp;
}
}
}
}
数组奇偶排序算法

本文介绍了一种将数组中所有奇数置于前半部分,偶数置于后半部分的算法。通过使用头尾指针技术,该算法有效地实现了奇偶数的分离,提高了数据处理效率。
1771

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



