时间:2021-05-19
这里介绍一种高效的能在O(n)时间复杂度内完成的算法。
核心思想是:定义两个指针,一个指针A从前往后扫描,一个指针B从后往前扫描。指针A扫描到偶数暂停,指针B扫描到奇数暂停,然后交换着两个数,交换之后继续如上述扫描和交换,直到指针A和指针B重合停止。
这个算法的Java代码如下:
复制代码 代码如下:
package Reorder;
public class Reorder {
public static void main(String[] args) {
int[] list = { 1, 2, 3, 4, 5, 7, 9, 11 };
reorderOddEven(list);
}
public static void reorderOddEven(int[] list) {
int length = list.length;
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
System.out.print("\n");
int begin = 0;
int end = length - 1;
while (begin < end) {
while (begin < end && (list[begin] & 0x1) != 0)
begin++;
while (begin < end && (list[end] & 0x1) == 0)
end--;
if (begin < end) {
int temp = list[begin];
list[begin] = list[end];
list[end] = temp;
}
}
for (int i = 0; i < length; i++) {
System.out.print(list[i] + " ");
}
}
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
调整数组顺序使奇数位于偶数之前1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半
奇偶排序是一个比较有个性的排序,基本思路是奇数列排一趟序,偶数列排一趟序,再奇数排,再偶数排,直到全部有序举例吧,待排数组[624159]第一次比较奇数列,奇数
从数字数组中筛选出奇数或者偶数的小函数。复制代码代码如下:
一、问题描述1、求一个无序数组的中位数,(若数组是偶数,则中位数是指中间两个数字之和除以2,若数组是奇数,则中位数是指最中间位置。要求:不能使用排序,时间复杂度
问题1:如何将一个list转化成一个dictionary?问题描述:比如在python中我有一个如下的list,其中奇数位置对应字典的key,偶数位置为相应的v