整数数组的奇偶数分开(小米笔试题)
整数数组的奇偶数分开(小米笔试题)
题目:
在一个N个整数数组里面,有多个奇数和偶数,设计一个排序算法,令所有的奇数都在左边。请完成 sort 的代码实现(C++或Java)
C++:
void sort(int N, int[]a)
{
…
}
Java:
void sort(int[]a){
…
}
例如: 当输入a = {8,4,1,6,7,4,9,6,4},
a = {1,7,9,8,4,6,4,6,4}为一种满足条件的排序结果
java版的实现代码:
package cn.cat.test; import java.util.Arrays; public class Test { public static void main(String[] args) { int[] data = {8,4,1,6,7,4,9,6,4}; sort(data); System.out.println(data); System.out.println(Arrays.toString(data)); }
// 排序实现 static void sort(int[] data) { for (int i = 0; i < data.length - 1; i++) { //能被2整除的数都是偶数,反之为奇数 if (data[i] % 2 == 0) { int j = i + 1; while (j < data.length) { if (data[j] % 2 != 0) { int temp = data[i]; data[i] = data[j]; data[j] = temp; break; } j++; } //说明后面的全部均为偶数,没必须要往下循环。 if (j == data.length) { break; } } } } }