學習演算法時,將演算法手寫實現,加深記憶。
二分查詢的演算法複雜度是o(l
ogn)
\omicron(log n)
o(logn
)
function dividal(start, end)
if(num > arr[mid]) else if(num < arr[mid])
}
每次選擇最大(小)的放入新陣列,演算法複雜度為o(n
2)
\omicron(n^2)
o(n2
)
function order(arr)
var big = arr[0]
var index = 0
for(var i = 0; ibig)
}orderarr.push(big)
arr.splice(index, 1)
return findbigest(arr)
} }
選擇乙個元素作為基準,比該元素大的都放左邊,比該元素小的都放右邊。基準條件為左(或右)邊的陣列長度小於2。用遞迴思想實現該演算法。演算法複雜度為
o (n
logn
)\omicron(n logn)
o(nlog
n)
function quicksort(arr) else
})return quicksort(leftarr).concat(criterion, quicksort(rightarr))
}
先拆分,一直拆分到只有乙個數。拆分完成後,開始遞迴合併。它的時間複雜度無論是平均,最好,最壞都是nlo
gn
n logn
nlog
n
function divide(p, r)
function merge(a, p, q, r) else }}
function merge_sort(a, p = 0, r)
const q = divide(p, r);
merge_sort(a, p, q);
merge_sort(a, q, r);
merge(a, p, q, r);
return a;
}
排序演算法的JS實現
排序演算法是基礎演算法,雖然關鍵在於演算法的思想而不是語言,但還是決定借助演算法視覺化工具結合自己常用的語言實現一下 1.氣泡排序 基本思路 依次比較兩兩相鄰的兩個數,前面數比後面數小,不變。前面數比後面數大,交換順序。一輪下來,最後的乙個數是最大的數。外迴圈每增加一次,內迴圈減少一次。圖形展示 f...
排序演算法 JS實現
原文引用自這裡,這裡只是我自己的學習的補充以及筆記 時間複雜度,o n2 var arr 5,6,3,1,8,7,2,4 function insertsort arr else return arr console.log insertsort arr 時間複雜度,o n2 var arr 5,1...
JS實現排序演算法
目錄 一 氣泡排序 方法名 sortarr 功能介紹 對陣列進行排序 冒泡演算法 arguments arr 必輸項 需要排序的陣列 action 非必輸項 up 公升序,down 降序 預設 let sortarr function arr,action 空陣列或者陣列1個元素,不需要排序直接跳出...