整数数组的奇偶数分开(小米笔试题)
题目:
在一个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;
}
}
}
}
}