整数数组的奇偶数分开(小米笔试题)

整数数组的奇偶数分开(小米笔试题)


题目:


在一个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;
				}
			}
			
		}
	}
}



原文地址:https://www.cnblogs.com/catgwj/p/7503307.html