上一章 數據結構複習(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));
}
}
冒泡排序的優點:
每進行一趟排序,就會少比較一次,因爲每進行一趟排序都會找出一個較大值。
如上例:第一趟比較之後,排在最後的一個數一定是最大的一個數
第二趟排序的時候,只需要比較除了最後一個數以外的其他的數,同樣也能找出一個最大的數排在參與第二趟比較的數後面
第三趟比較的時候,只需要比較除了最後兩個數以外的其他的數,
以此類推……也就是說,沒進行一趟比較,每一趟少比較一次,一定程度上減少了算法的量。