[算法]奇数下标都是奇数或偶数下标都是偶数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]奇数下标都是奇数或偶数下标都是偶数相关的知识,希望对你有一定的参考价值。

题目:

给定一个长度不小于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();
	}

以上是关于[算法]奇数下标都是奇数或偶数下标都是偶数的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-调整数组顺序使奇数位于偶数前面-60

设计把所有的奇数移动到所有偶数前面的算法

卷积核的大小一般为奇数*奇数 1*1,3*3,5*5,7*7都是最常见的。这是为什么呢?为什么没有偶数*偶数?

基础编程题之奇数位(偶数位)都是奇数(偶数)

PCB多层板为什么都是偶数层?奇数层不行吗?原因很现实!

java怎么判断一个数是奇数还是偶数