调整数组使得奇数在前偶数在后
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:定义两个指针,分别记作head、tail。head一直往后走,直到指向的数据不是奇数时,交换head和tail所指的数据。tail一直往前走,直到指向的数据不是偶数时,交换head和tail所指的数据。
代码实现:
// 调整数组使得奇数在前,偶数在后
public static int[] exchange(int[] nums){
int head = 0;
int tail = nums.length-1;
while(head < tail){
// 头指针遇到奇数 就++
if(nums[head] %2 !=0){
head++;
}else{
swap(nums,head,tail);
}
if (nums[tail] %2 == 0){
tail--;
}else{
swap(nums,head,tail);
}
}
return nums;
}
private static void swap(int[] nums,int head,int tail){
int tmp = nums[head];
nums[head] = nums[tail];
nums[tail] = tmp;
}
本文介绍了一种算法,用于调整整数数组,使所有奇数位于数组的前半部分,所有偶数位于后半部分。通过定义两个指针head和tail,分别从数组两端开始遍历,遇到奇数和偶数时进行交换,最终实现奇偶分离。代码实现包括一个交换函数和主要的调整数组顺序的函数。
2912

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



