學習JS資料結構

2021-10-25 13:49:25 字數 1941 閱讀 5267

**思路**

用遞迴實現——先遞進,再回歸

用迴圈實現——想起來比較簡單,實現起來比較複雜

避免看著我會,動手就廢的現象,動手寫一遍比看十遍有用

選擇排序 o(n^2)

快速排序 o(n log2 n)(二分法)

歸併排序 o(n log2 n)(二分法)

技術排序 o(n + max)

選擇最大/最小依次進行比較排序,直到排完。

// 遞迴思路

letmin

=(numbers)

=>

else

}// 比較兩個最小值

letminindex

=(numbers)

=>

numbers.

indexof

(min

(numbers)

)// 宣告minindex

letsort

=(numbers)

=>

else

}

若公升序排序

以 最大為基準,小的去前面,大的去後面

只需要重複這句話,就排好序了

// 遞迴思路

letquicksort

= arr =>

let pivotindex = math.

floor

(arr.length /2)

;let pivot = arr.

splice

(pivotindex,1)

[0];

let left =

;let right =

;for

(let i =

0; i < arr.length; i++

)else

}return

quicksort

(left)

.concat

([pivot]

,quicksort

(right)

)}

若公升序排序

左邊一半排好序,右邊一半排好序

然後把兩邊合併(merge)起來

let

mergesort

= arr =>

let left = arr.

slice(0

, math.

floor

(k/2))

let right = arr.

slice

(math.

floor

(k/2))

return

merge

(mergesort

(left)

,mergesort

(right))}

letmerge

=(a, b)

=>

用乙個雜湊表做記錄,key:value 記錄

發現數字n就記n:1,如果再次發現n就加1

最後把雜湊表的key全部打出來,假設n:m,那麼n需要列印m次

let

countsort

= arr =>

, max =

0, result =

for(

let i=

0; i)else

if(arr[i]

> max)

}for

(let j=

0; j<=max; j++)}

}return result

}

js 資料結構

樹是電腦科學中經常用到的一種資料結構。樹是一種非線性的資料結構,以分層的方式儲存資料。二叉樹每個節點的子節點不允許超過兩個。乙個父節點的兩個子節點分別稱為左節點和右節點,通過將子節點的個數限定為2,可以寫出高效的程式在樹中插入 查詢和刪除資料。二叉查詢樹 bst 是一種特殊的二叉樹,相對較小的值儲存...

js資料結構

一 堆疊的概念 在計算機領域中,堆疊是兩種資料結構。棧 佇列優先,先進先出 由作業系統自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。堆 先進後出 動態分配的空間 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 分配方式倒是類似於鍊錶。二 js的...

JS資料結構學習 佇列

佇列是遵循先進先出原則的一組有序的項,與棧的不同的是,棧不管是入棧還是出棧操作都是在棧頂操作,佇列則是在隊尾新增元素,隊頂移除,用乙個圖來表示大概是這樣事的 用乙個更形象的例子就是 排隊服務,總是先排隊的人會先接受服務,當然不考慮插隊的情況 與棧的建立類似,首先建立乙個表示佇列的函式,然後定義乙個陣...