我怎麼又去研究算法了呢?本身不是根正苗紅CS專業,基礎差,亡羊補牢,填充數據結構方面的空白,學習過程遇到有趣的算法就記錄下來。
常見算法,多爲 c c++ python 所描述,爲方便,嘗試轉成平常所用javascript 才疏學淺,若有寫的不當之處,不吝賜教。🙏🙏🙏🙏javascript
代碼實現:html
function bucketSort (arr) {
// 假設咱們排序的範圍爲0-10 那麼咱們準備11個桶來放這些數字
let buckets = new Array(11).fill(0)
let newArr = []
// 裝桶
arr.forEach(val => { buckets[val]++ })
buckets.forEach((val, index) => {
for (let i = 1; i <= val; i++) {
newArr.push(index)
}
})
return newArr
}
console.log(bucketSort([5, 3, 5, 2, 8]))
console.log(bucketSort([1, 3, 9, 8, 7, 2]))
console.log(bucketSort([3, 5, 2, 7, 9, 2, 5]))複製代碼
圖解:
java
桶排序 (Bucket sort)或所謂的箱排序的原理是將數組分到有限數量的桶子裏,而後對每一個桶子再分別排序(有可能再使用別的排序算法或是以遞歸方式繼續使用桶排序進行排序),最後將各個桶中的數據有序的合併起來。python
桶排序動畫演示: Bucket Sort Visualization
特色:c++