数据结构之BubbleSort

冒泡排序的基本思想是,每一次都比较相邻的两个数,若前面的数大于(或小于)后面的数,则交换两个数的位置,从数组的第0个元素和第1个元素比较开始,到第i-2个元素和第i-1个元素比较结束,这称为一趟,经过这一趟之后,数组中最大(或最小)的元素就到数组的最后一位了,然后开始第二趟,第二趟从数组的第0个元素和第1个元素比较开始,到第i-3个元素和第i-2个元素比较结束,这是第二趟,经过第二趟之后,数组中次大(或次小)的元素就到数组的倒数第二位了,这样依次进行下去,经过i-2趟的排序,整个数组的元素就有序了。

综上所述,冒泡排序需要两重循环,外层的循环为趟数,对于长度为i的数组,需要比较的趟数为i-1,内层的循环为每趟的比较次数,比较次数跟外层的趟数相关,当比较第0趟时,需要两两比较i-1次,对于第1趟排序,需要比较i-2次,第2趟排序需要比较i-3次......第n-1次排序需要比较n次,则外层循环的区间为:i : 0 ~ len - 1, j : 0 ~ len - i - 1

下面是测试冒泡排序的Java代码:

public class BubbleSort {
	public static void main(String[] args) {
		int[] arr = {2, 5, 3, 9, 6, 1, 7};
		int len = arr.length;
		int temp;
		boolean flag = false;
		for(int i = 0; i < len - 1; i++){
			for(int j = 0; j < len - 1 - i; j++){
				if(arr[j] > arr[j + 1]){
					flag = true;
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
			if(!flag){
				break;
			}
		}
		for(int i = 0; i < len; i++){
			System.out.print(arr[i] + " ");
		}
	}
}


你可能感兴趣的:(java,数据结构,冒泡排序,bubblesort)