日期:2014-05-20  浏览次数:20641 次

J2SE基础/数组相关

/**
	 * 数组排序(冒泡)
	 * eg:[2,3,1] => [1,2,3]
	 * @param array
	 */
	static void bubbleSort(int[] array) {
		// 临时变量
		int temp;
		// 循环排序
		for (int i = 0; i < array.length - 1; i++) {
			// 最大的元素交换到最后
			for (int j = 0; j < array.length - 1 - i; j++) {
				// 交换元素
				if (array[j] > array[j + 1]) {
					temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}
		// 输出
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i] + "\t");
		}
	}

	/**
	 * 两数组相同元素(无序)
	 * eg:[1,2,3],[9,3] => [3]
	 * @param a
	 * @param b
	 */
	static void findArray1(int[] a, int[] b) {
		// 循环比较
		for (int i = 0, j = 0; i < a.length;) {
			// 相等
			if (a[i] == b[j]) {
				System.out.print(a[i] + "\t");
				i++;
				j = 0;
			} else {
				if (j == b.length - 1) {
					i++;
					j = 0;
				} else
					j += (j < b.length - 1 ? 1 : 0);
			}
		}
	}

	/**
	 * 两数组相同元素(有序)
	 * eg:[1,2,3],[3,9] => [3]
	 * @param a
	 * @param b
	 */
	static void findArray2(int[] a, int[] b) {
		// 循环比较
		for (int i = 0, j = 0; i < a.length;) {
			// 相等
			if (a[i] == b[j]) {
				System.out.print(a[i] + "\t");
				i++;
				j = 0;
			} else if (a[i] > b[j]) {
				if (j == b.length - 1) {
					i++;
					j = 0;
				} else
					j += (j < b.length - 1 ? 1 : 0);
			} else {
				i++;
			}
		}
	}
/*
	 * 判断数组中的相同数
	 */
	static void bitMapTest() {
		// 定义int数组
		int iArray[] = { 5, 2, 3, 2, 1, 2 };
		// 确定数组最大值
		int max = 0;
		for (int i = 0; i < iArray.length; i++) {
			if (max < iArray[i])
				max = iArray[i];
		}
		// 确定数组的大小
		if (max == 0)
			max = 1;
		else
			max++;
		// 定义byte数组
		byte bArray[] = new byte[max];
		// 循环计算重复数字
		for (int i = 0; i < iArray.length; i++) {
			if (bArray[iArray[i]] == 1)
				System.out.println(iArray[i]);
			bArray[iArray[i]] = 1;
		}
	}
?