冒泡排序

99 阅读1分钟
public class BubbleSort {
	private static void sort(int array[]) {
		int tmp = 0;
		// 记录最后一次交换的位置
		int lastExchangeIndex = 0;

		// 无序数列的边界,每次比较只需要比到这里为止
		int sortBorder = array.length - 1;

		for (int i = 0; i < array.length; i++) {
			// 有序标记,每一轮的初始是true
			boolean isSorted = true;
			
			for (int j = 0; j < sortBorder; j++) {
				if (array[j] > array[j + 1]) {
					tmp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = tmp;
					// 有元素交换,所以不是有序,标记变为false
					isSorted = false;

					// 把无序数列的边界更新为最后一次交换元素的位置
					lastExchangeIndex = j;
				}
			}
			sortBorder = lastExchangeIndex;
			if (isSorted) {
				break;
			}
		}
	}

	public static void main(String[] args) {
		int[] array = new int[] { 3, 4, 2, 1, 5, 6, 7, 8 };
		sort(array);
		System.out.println(Arrays.toString(array));
	}
}

参考连接:ttps://mp.weixin.qq.com/s/wO11PDZSM5pQ0DfbQjKRQA