JS 氣泡排序從學到優化

2022-07-25 21:21:09 字數 2048 閱讀 7657

目的:理解演算法 深化演算法 

氣泡排序:

直接上**好於文字

乙個冒泡例項

45,67,23,88,21,6,99

// 第一輪 6次

// 45 67 23 88 21 6 99

// 45 23 67 88 21 6 99

// 45 23 67 88 21 6 99

// 45 23 67 21 88 6 99

// 45 23 67 21 6 88 99

// 45 23 67 21 6 88 99

// 第二輪 6次

// 23 45 67 21 6 88 99

// 23 45 67 21 6 88 99

// 23 45 21 67 6 88 99

// 23 45 21 6 67 88 99

// 23 45 21 6 67 88 99

// 23 45 21 6 67 88 99

// 第三輪 6次

// 23 45 21 6 67 88 99

// 23 21 45 6 67 88 99

// 23 21 6 45 67 88 99

// 23 21 6 45 67 88 99

// 23 21 6 45 67 88 99

// 23 21 6 45 67 88 99

// 第四輪 6次

// 21 23 6 45 67 88 99

// 21 6 23 45 67 88 99

// 21 6 23 45 67 88 99

// 21 6 23 45 67 88 99

// 21 6 23 45 67 88 99

// 21 6 23 45 67 88 99

// 第五輪 6次

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 第六輪 6次(這個第6輪即使後面已經成型了 它還是按照程式走一遍)

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

// 6 21 23 45 67 88 99

上**(基礎型)

1

氣泡排序:23

49091

9293

上**(優化1):

1 氣泡排序優化://

每輪比較少比較一次。(每一輪都會比較出乙個最大值,然後後一輪沒有必要再比較了,所以沒比較一輪,就少比較一次。。。) j2

34124

125126

127

這裡的i就是為了減少比較次數的,通過紅色數字可以看出,每一輪下來,其實紅色部分是不會再進行比較的,因為他已經從大到小排了,如果是基礎版,必須得走,優化後,紅色的那部分無需再進行比較.

次數=n(n-1)/2

上**(優化2):

1

氣泡排序優化2

2做乙個判斷

3如果在比較的時候 兩兩不發生比較了 就退出迴圈 45

6141

142143

144

這裡加了判斷後可以減少外層迴圈

比如 排序123

基礎排序為2輪4次

-i排序為2輪3次(它只捨去了第二輪迴圈的第二次比較)

bool判斷的話為:1輪2次 因為它進行一輪2次比較後發現下一輪沒有可比較的了 直接退出迴圈 輸出排序

氣泡排序 氣泡排序演算法優化

常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...

氣泡排序原理及優化實現 JS

假設陣列中有n個數,比較相鄰的兩項,如果前者大於後者,就把兩個數交換位置。那麼第一輪過後就可以選出乙個最大的數放在最後面 經過n 1 陣列的length 1 輪,就完成了所有數的排序。var arr 9 1,5 8,3 7 function bubblesort arr return arr 1,3...

優化氣泡排序

氣泡排序 bubble sort 重複遍歷需要排序的數列,依次比較兩個元素,如果順序錯誤就進行交換,直到不再需要交換為止。演算法步驟如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元...