冒泡的原理

2021-09-18 17:41:28 字數 1602 閱讀 5072

冒泡:冒泡演算法排序核心:陣列中相鄰的兩個元素比較大小,如果前者大於後者則交換位置

每一輪比較可以找出陣列中最大的那個數字,並且移到了陣列的最後面

var arr = [18, 15, 10, 20, 5]; //[5,10,15,18,20]

//1.獲取陣列中所有元素:陣列遍歷

for (var i = 0; i < arr.length - 1; i++)

console.log("第" + i + "次比較之後,陣列變成了" + arr); //

}console.log("第一輪比較的結果是" + arr);

// 總結規律:迴圈會執行五次 [18,15,10,20,5]

// 第一次 18 > 15 交換位置 [15,18,10,20,5]

// 第二次 18 > 10 交換位置 [15,10,18,20,5]

// 第三次 18 < 20 位置不變 [15,10,18,20,5]

// 第四次 20 > 5 交換位置 [15,10,18,5,20]

// 第五次比較 20 和undefined比較 無意思 [15,10,18,5,20] 最後一次比較無意義的,五個數字只需要比較四次就可以了

// 本次迴圈結束之後,最大的那個數字會變成陣列的最後乙個元素(一輪比較只能找出陣列中最大的那個數字)

// 第二輪:再來一輪:可以找出第二大的數字 [15,10,18,5,20]

for (var i = 0; i < arr.length - 1; i++)

console.log("第" + i + "次比較之後,陣列變成了" + arr); //

}console.log("第二輪比較的結果是" + arr);

// *第二輪比較過程:找出第二大的數字

// * 第一次 15 > 10 交換位置 [10,15,18,5,20]

// * 第二次 15<18 位置不換 [10,15,18,5,20]

// * 第三次 18>5 交換位置 10,15,5,18,20]

// * 第四次: 18 < 20 因為此時陣列的最後乙個元素已經是最大的了,本輪找出的最大陣列只能是陣列的倒數第二個

// 第三輪:再來一輪:可以找出第三大的數字 [10,15,5,18,20]

for (var i = 0; i < arr.length - 1; i++)

console.log("第" + i + "次比較之後,陣列變成了" + arr); //

}console.log("第三輪比較的結果是" + arr);

//第四輪:再來一輪:可以找出第四大的數字 [10,15,5,18,20]

for (var i = 0; i < arr.length - 1; i++)

console.log("第" + i + "次比較之後,陣列變成了" + arr); //

}console.log("第四輪比較的結果是" + arr);

// //第四輪結束之後,由於陣列只有五個元素,已經找出了前面四個最大的元素,剩下的這乙個元素必定是最小的

// //沒有必要比較

氣泡排序的原理

package com.zheban.test 陣列公升序 author king public class test1 排序前的陣列列印 print arr1 氣泡排序 sort02 arr1 排序後的陣列列印 print arr1 列印功能 返回值 無 引數列表 arr1 static void...

氣泡排序原理

原理 比較兩個相鄰的元素,將值大的元素交換至右端。思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完...

冒泡法排序原理

第一 在a 0 到a n 1 的範圍內,依次比較兩個相鄰元素的值 若a j a j 1 則交換與,j的值取0,1,2.n 2 經過 這樣一趟冒泡,就把這n個數中最大的數放到a n 1 中 第二 再對a 0 到a n 2 的範圍內再進行一趟冒泡,又將該範 圍內的最大值換到a n 2 中 第三 依次進行...