js冒泡演算法以及優化

2022-07-23 21:00:29 字數 1274 閱讀 1713

氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

演算法描述

1、比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個;

2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;

3、針對所有的元素重複以上的步驟,除了最後乙個;

4、重複步驟1~3,直到排序完成;

**演示

**實現

function randomarray(start,end),random,step=end-start;

while(a.length 0;i--)

}}  return array;

}

console的結果:

氣泡排序優化一

[2,1,3,4]在第一次迴圈後就變成[1,2,3,4],已經實現排序,但for迴圈仍會繼續。所以在交換迴圈中新增標記,如果某一次交換迴圈結束中都沒有發生交換事件,說明排序已經是ok的,此時應該跳出for迴圈。

**實現

function bubblesort1(array) 

for (let i = array.length - 1;i > 0;i--)

}if (sortdone)

}  return array;

}

氣泡排序優化二

假設陣列尾部幾個資料已經是有序排序的,比如[34,5,12,6,78,79,80,81,82],那後面幾個資料在交換迴圈中其實就可以不用去進行比較,直接查詢到交換的最後乙個索引,並將該索引作為下次迴圈的終止點。

**實現

function bubblesort1(array) 

for (let i = array.length - 1;i > 0;i--)

}i = sortedindex;

}  return array;

}

最後我們來檢驗下這三種方法的迴圈次數。

氣泡排序以及優化

排序 1.穩定的排序演算法 2.不穩定的排序演算法 3.比較排序 元素之間的次序依賴它們之間的比較,每個數需要與其他數進行比較才能確定自己的位置。比較典型的比較排序有快速排序,歸併排序,堆排序,氣泡排序。4非比較排序 非比較排序只要確定每個元素之前的已有元素個數即可,經過一次遍歷便可以解決。排序 1...

氣泡排序以及優化

氣泡排序是新手小白學的第乙個排序方法,複雜度很高。那麼如何在氣泡排序的基礎上對其進行優化?我們給一組資料 9,5,6,7,5,3 第一次冒泡 9和5交換位置 5,9,6,7,5,3 9和6交換位置 5,6,9,7,5,3 9和7交換位置 5,6,7,9,5,3 9和5交換位置 5,6,7,5,9,3...

氣泡排序以及優化

最近需要用到氣泡排序,所以翻出來研究一下。氣泡排序的基礎其實就是元素交換,是一種極其簡單的排序演算法。話不多說,直接上 1 include 2 void bubble sort int arr,int len 315 16 17 1819int main 20 22int len int sizeo...