數據結構複習(8)---冒泡排序

上一章 數據結構複習(7)—雙向循環鏈表

冒泡排序圖解

package cjy.datastructure;

import java.util.Arrays;
/**
 * 冒泡排序
 * Title: BubbleSort.java
 * @author CJY》10258
 * @date 2019年7月13日
 */
public class BubbleSort {
/**
 * 冒泡排序的優點:每進行一趟排序,就會少比較一次,
 * 因爲每進行一趟排序都會找出一個較大值。
 * 如上例:第一趟比較之後,排在最後的一個數一定是最大的一個數,
 * 第二趟排序的時候,只需要比較除了最後一個數以外的其他的數,
 * 同樣也能找出一個最大的數排在參與第二趟比較的數後面,
 * 第三趟比較的時候,只需要比較除了最後兩個數以外的其他的數,
 * 以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了算法的量。
 * @param args
 */
	public static void main(String[] args) {
		int[] array = new int[] { 48,3, 15, 5, 36, 26, 27, 2, 4, 19, 38, 44, 46,50,47 };
		//控制輪數,數組元素有多少個,就得排多少輪
		for (int i = 0; i < array.length; i++) {
			//(當前第I輪)每一輪比較的次數 這裏12個元素比較11次
			for (int j = 0; j < array.length - i - 1; j++) {
				//兩個元素之間的比較,大於則交換位置從小到大排序(或者 小於則交換位置:從大到小排序)
				if (array[j] > array[j + 1]) {
					int temp = array[j];
					array[j] = array[j + 1];
					array[j + 1] = temp;
				}
			}
		}
		//打印結果:[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]
		System.out.println(Arrays.toString(array));
	}

}

冒泡排序的優點:

每進行一趟排序,就會少比較一次,因爲每進行一趟排序都會找出一個較大值。
如上例:第一趟比較之後,排在最後的一個數一定是最大的一個數

第二趟排序的時候,只需要比較除了最後一個數以外的其他的數,同樣也能找出一個最大的數排在參與第二趟比較的數後面

第三趟比較的時候,只需要比較除了最後兩個數以外的其他的數,

以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了算法的量。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章