判斷括號成對出現
sdfj(nrg(lj()k)nk)sldjwef 合法
q(wdwf()hknkql(whdq)w) 合法
hk)nqeif)liq(h(flq)wj( 不合法
思路:括號存在巢狀關係,也存在並列關係
可以遍歷字串的每乙個字元,使用棧來處理:
(1)遇到左括號,把左括號壓入棧中
(2)遇到右括號,判斷棧是否為空,為空說明沒有左括號與之對應,則不合法。如果棧不為空,則移除棧頂的左括號---這對括號抵消了
當遍歷結束後,如果棧是空的則合法,否則不合法
解析:(1)比較相鄰的兩個元素,如果前乙個比後乙個大,則交換位置
(2)第一輪的時候,最後乙個元素應該是最大的乙個
(3)按照步驟(1)的方法進行相鄰兩個元素比較,由於最後乙個元素已經是最大的了,所以最後乙個元素不用比較
//氣泡排序
let arr = [1, 6, 3, 7, 5, 9, 2, 8];
function
sort(arr)
}} console.log(arr)
console.timeend(
"氣泡排序耗時")}
sort(arr)
解析:快速排序是對氣泡排序的一種改進,第一趟排序時將資料分成兩個部分,一部分比另一部分的所有資料都要小。然後遞迴呼叫,在兩邊都實現快速排序。
//快速排序
//快速排序就是從中間取乙個數,然後宣告兩個空陣列
//小於這個數的放在左邊,大於這個數的放在右邊
//最後通過遞迴呼叫實現的一種排序方法
//比氣泡排序用的更多
let arr = [1, 6, 3, 7, 2, 2, 2, 5, 9, 2, 8];
function
sort(arr)
let middleindex = math.floor(arr.length / 2) //
中間數的下標,分奇偶
let middle = arr.splice(middleindex, 1)[0]
let left =
let right =
for (let i = 0; i < arr.length; i++)
else
} return
sort(left).concat([middle], sort(right))
}console.log(sort(arr))
js十大排序演算法:
演算法面試題
1 兩個有序的陣列求中位數 時間複雜度o log n m 這個演算法有一定的缺陷,僅做參考 2 如何解決hash衝突 3 調整陣列順序使奇數字於偶數前面 void reorderoddeven int pdata,unsigned int length 4 鍊錶中倒數第k個節點 listnode f...
演算法面試題
戰爭遊戲的至關重要環節就要到來了,這次的結果將決定王國的生死存亡,小b負責首都的防衛工作。首都位於乙個四面環山的盆地中,周圍的n個小山構成乙個環,作為預警措施,小b計畫在每個小山上設定乙個觀察哨,日夜不停的瞭望周圍發生的情況。一旦發生外地入侵事件,山頂上的崗哨將點燃烽煙,若兩個崗哨所在的山峰之間沒有...
演算法面試題
假設有n個人,1 n,從第乙個開始計數,到第k個人則出列,隨後從第k 1個人重新計數,再到k出列,直到剩下最後乙個,求最後乙個人的編號。字串排序,先把comparefunction寫出來,然後呼叫arr.sort comparefunction comparefunction function co...