现在的位置: 首页 > 综合 > 正文

冒泡排序 选择排序

2013年11月13日 ⁄ 综合 ⁄ 共 872字 ⁄ 字号 评论关闭

冒泡排序

public class BubbleSort {

	public static int[] Sort(int[] a) {
		int len = a.length;
		for (int i = 1; i <= len - 1 ; i++) {
			for (int j = 0; j < len - i; j++) {
				if (a[j] > a[j + 1]) {
					Swap.swap(a, j + 1, j);
				}
			}
		}
		return a;
	}
	/*及时终止的冒泡排序*/
	public static int[] Sort2(int[] a) {
		int len = a.length;
		boolean sorted = true;
		for (int i = 1; !sorted && i <= len - 1 ; i++) {
			sorted = true;
			for (int j = 0; j < len - i; j++) {
				if (a[j] > a[j + 1]) {
					Swap.swap(a, j + 1, j);
					sorted = false;
				}
			}
		}
		return a;
	}
}

选择排序

public class SelectSort {

	public static int[] Sort(int[] a) {
		int len = a.length;
		for (int i = 0; i < len; i++) {
			int index = getMinIndex(a, i);
			/* 当i!=index才进行元素交换 */
			/* 交换元素 */
			if (i != index) {
				Swap.swap(a, i, index);
			}
		}
		return a;
	}

	/**
	 * 获取响应范围中数组的最小值索引
	 * 
	 * @param a
	 *            数组
	 * @param startIndex
	 *            起始位置
	 * @return 最小值的位置
	 */
	private static int getMinIndex(int[] a, int startIndex) {
		int len = a.length;
		int minValue = a[startIndex];
		int minIndex = startIndex;
		for (int i = startIndex + 1; i < len; i++) {
			if (minValue > a[i]) {
				/*出错地方,minValue应及时更新*/
				minValue = a[i];
				minIndex = i;
			}
		}
		return minIndex;
	}

}

抱歉!评论已关闭.