[算法]奇数下标都是奇数或偶数下标都是偶数
题目:
给定一个长度不小于2的数组arr,实现一个函数调整arr,要么使所有的偶数下标都是偶数,要么使所有的奇数下标都是奇数。
要求:时间复杂度为O(N),额外空间复杂度为O(1)。
程序:
public static void modify(int[] arr) {if (arr == null || arr.length < 2) {return;
}int even = 0;
int odd = 1;
int end = arr.length - 1;
while (even <= end && odd <= end) {
printArray(arr);if ((arr[end] & 1) == 0) {
swap(arr, end, even);even += 2;} else {
swap(arr, end, odd);odd += 2;}}}public static void swap(int[] arr, int index1, int index2) {int tmp = arr[index1];
arr[index1] = arr[index2];arr[index2] = tmp;}public static void printArray(int[] arr) {for (int i = 0; i != arr.length; i++) {System.out.print(arr[i] + " ");
}System.out.println();}