什麼是氣泡排序,就是兩個相鄰元素之間進行比較,然後較大的數字交換到右邊。
設定乙個陣列arr=[1,5,3,7,6,8,4,2]
先進行第一輪比較:
for
(let i=
0;i1;i++)}
i=0 arr[
0] arr[
1] 較大的是5 不交換位置
//此時順序 1,5,3,7,6,8,4,2
i=1 arr[
1] arr[
2] 較大的是5 交換位置
//此時順序 1,3,5,7,6,8,4,2
i=2 arr[
2] arr[
3] 較大的是7 不交換位置
//此時順序 1,3,5,7,6,8,4,2
i=3 arr[
3] arr[
4] 較大的是7 交換位置
//此時順序 1,3,5,6,7,8,4,2
i=4 arr[
4] arr[
5] 較大的是8 不交換位置
//此時順序 1,3,5,6,7,8,4,2
i=5 arr[
5] arr[
6] 較大的是8 交換位置
//此時順序 1,3,5,6,7,4,8,2
i=6 arr[
6] arr[
7] 較大的是8 交換位置
//此時順序 1,3,5,6,7,4,2,8
為什麼是length-1而不是length
假設是length,那麼我們還有一步 i=7 arr[7] arr[8]但是arr[8]是不存在的,undefined無法進行比較
以上是第一輪比較完畢,我們可以得出乙個結論氣泡排序一輪結束以後,可以得到該陣列的最大值
如果我們要全部進行比較每次都這樣迴圈要迴圈7次,所以我們採用雙層迴圈
最外邊一層 i 代表迴圈次數,內層 j 代表第 i 次的一輪迴圈,因為每一輪迴圈過後就可以找出乙個最大值,所以內層我們可以每一輪少比較一次
i=0 第一次外層迴圈 內層迴圈到7
i=1第二次外層迴圈 內層迴圈到6
…由此可得 內層每輪迴圈將減少(i+1)次
const arr=[1
,5,3
,7,6
,8,4
,2];
for(
let i=
0;i1;i++)}
} console.
log(arr)
<
/script>
氣泡排序的核心就是 雙層迴圈和交換變數 氣泡排序的理解
int temp 作為交換媒介 for int i 0 i a.length i 外層迴圈 啟動內層迴圈,並改變內層迴圈次數限制。內層迴圈 比較 交換相鄰的兩個數,比較次數是陣列裡的資料個數減1。理解 假設陣列a裡有5個數。第一層迴圈會迴圈5次,也就是啟動5次第二層迴圈,同時每次都將改變第二層迴圈限...
理解 氣泡排序 快速排序
練習 second text hao long 片.建立乙個結構體,用來儲存姓名和分數 typedef student student intmain for int i 0 i num 1 i for int i 0 i num i getchar getchar 用來暫停程式,以便檢視程式輸出的...
氣泡排序的個人理解
去新松面試筆試題中最後一道是氣泡排序,看到這題先是興奮後是悲哀。興奮的是這麼簡單啊,上大學時整的老明白了,考試的時候也為數不多的自己答的題。悲哀的是畢業後就再也沒用過,全都就飯吃了。想想看我最有文化的時候應該就是高三了,但是當年的數理化知識現在還記得多少?花了乙個小時惡補了一下,唉!這學習能力趕上老...