冒泡排序-java
1.冒泡排序low版本
每次冒泡程序都是數列的第一個元素開始,然后依次和剩余的元素進行比較,若小于相鄰的元素,就置換位置,同時會將較大元素作為基準元素,繼續與相鄰的元素比較,直到最后一個數列元素
public static void sort(int[] arr) {
for (int i = 1; i < arr.length; i++) { //第一層for回圈,用來控制冒泡的次數
for (int j = 0; j < arr.length - 1; j++) { //第二層for回圈,用來控制冒泡一層層到最后
//如果前一個數比后一個數大,兩者調換 ,意味著泡泡向上走了一層
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
2.冒泡排序優化版
第一點是加入了一個布林值,判斷第二層回圈中的調換有沒有執行,如果沒有進行兩兩調換,說明后面都已經排好序了,已經不需要再回圈了,直接跳出回圈,排序結束
第二點是第二層回圈不再回圈到arr.length - 1,因為外面的i回圈遞增一次,說明陣列最后就多了一個排好序的大泡泡.第二層回圈也就不需要到最末尾一位了,可以提前結束回圈
/**
* 終極版冒泡排序
* 加入一個布爾變數,如果內回圈沒有交換值,說明已經排序完成,提前終止
*
* @param arr
*/
public static void sortPlus(int[] arr) {
if (arr != null && arr.length > 1) {
for (int i = 0; i < arr.length - 1; i++) {
// 初始化一個布林值
boolean flag = true;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 調換
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
// 改變flag
flag = false;
}
}
if (flag) {
break;
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/116368.html
標籤:其他
上一篇:Python石頭剪刀布完整代碼
