資料結構與演算法的js描述總結

2021-08-03 10:22:45 字數 3376 閱讀 7505

1.兩種判斷結構:if語句和switch語句。

js中的switch語句和其他程式語言的區別:在js中,用來判斷的表示式可以是任意型別,而不限於整型。

2.注意引數傳遞和引用傳遞

3.204 not content 該http響應的意思是僅向客戶端傳送http報標頭檔案,而不傳送http內容體。

4.在es5中,js擁有的是函式作用域。

5.使用物件和物件導向程式設計。

6.(1)js中的陣列是一種特殊的物件,用來表示偏移量的索引是該物件的屬性,索引可能是整數,然而,這些數字索引在內部被轉換為字串型別,這是因為js物件中的屬性名必須是字串。陣列在js中只是一種特殊的物件,所以效率不如其他語言中的陣列高。

(2)和很多程式語言不同,js中陣列中的元素不必是同一種資料型別。(3)js中陣列也是物件,陣列的長度可以任意增長,超出其建立時指定的長度。

7.建立陣列的方式,推薦使用操作符,與使用array的建構函式相比,這種方式被認為效率更高。

8.陣列常用函式:

查詢元素:indexof() lastindexof()

陣列的字串表示:join() tostring() 當輸出陣列時,系統自動呼叫tostring()方法

由已有陣列建立新陣列:concat():不更改原陣列;splice():更改原陣列

為陣列新增元素:push():將乙個元素新增到陣列末尾;unshift():將元素新增到陣列起始位置

從陣列中間位置新增和刪除元素:splice() 需提供如下引數:起始索引(即你希望開始新增元素的地方);需要刪除的元素個數(新增元素時設為0),想要新增進陣列的元素。

sort()函式預設使用字典順序對元素排序

迭代器方法:

(1)不生成新陣列的迭代器方法:foreach() every() some():接受乙個返回值為布林型別的引數。 reduce():接受乙個函式,返回乙個值,不斷累加值。

(2) 生成新陣列的迭代器方法:map()與foreach()類似,區別是map()返回乙個新的陣列。 filter()和every()類似,傳入返回值為布林型別的函式,該方法不返回true,

返回乙個應用該函式後結果為true的元素的新陣列。

9.資料結構之列表

列表的定義:列表是一組有序的資料,列表中的元素可以是任意資料型別。儲存元素的數量受到記憶體的限制。

如果資料儲存的順序不重要,也不必對資料進行查詢,則選擇列表這種資料結構。

應用場景:影碟租賃

10.棧的應用:進製轉化,回文字串,使用棧實現遞迴

11.資料結構之佇列 應用場景:方塊舞的舞伴分配,佇列對資料排序,優先佇列

12.資料結構之鍊錶 陣列的缺點:(1)長度固定,當陣列被資料填滿時,加入新的元素很困難。(2)新增和刪除元素麻煩。但js中的陣列不存在上述問題。

js陣列的問題是,他們被實現成了物件,與其他語言相比,效率低下。若發現陣列在使用時很慢,可考慮用鍊錶代替它。

13.鍊錶的優點:插入乙個節點的效率很高;

鍊錶的種類:單向鍊錶和雙向鍊錶(節點存在前驅和後繼)和迴圈鍊錶(鍊錶的尾節點指向頭結點);許多鍊錶的實現在鍊錶的最前面有乙個頭結點。

雙向鍊錶的適用場景:1.從後往前遍歷列表;2.雙向鍊錶的remove方法比單向列表高

迴圈鍊錶的適用場景:當需從後往前遍歷鍊錶,但又不想付出額外代價建立雙向鍊錶,可使用迴圈鍊錶。

14.資料結構之字典

字典的適用場景:便利之處在於可對整體進行操作,比如,顯示字典中的所有元素。

15.注意:在陣列中,當鍵的型別為字串時,length屬性不起作用。

例如:

var nums = new

array();

nums[0] = 1;

nums[1] = 2;

console.log(nums.length);//2

var pbook = new

array();

pbook['a'] = 1;

pbook['b'] = 1;

console.log(pbook.length);//0

16.從字典中刪除鍵-值對需要使用js中的乙個內建函式:delete。該函式是object類的一部分,使用對鍵的引用作為引數,該函式同時刪除鍵和與其關聯的值。

function remove(key)

17.資料結構之雜湊

雜湊的適用場景:雜湊使用的資料結構叫做雜湊表,在雜湊表上插入、刪除和取用資料非常快,但查詢操作效率低下。

為了避免碰撞,雜湊表中陣列大小應該是乙個質數。

雜湊化字串型別的鍵和雜湊化整型鍵

雜湊表儲存資料:對鍵值雜湊後,將資料儲存在雜湊表中。

碰撞處理:當雜湊函式對於多個輸入產生同樣的輸出時,則產生碰撞。

開鏈法和線性探測法、

開鏈法的原理:實現雜湊表的底層陣列中,每個陣列又是乙個新的資料結構,即使兩個鍵雜湊後的值相同,依然被儲存在同樣的位置,只是它們在第二個陣列中的

位置不一樣。在二維陣列中,使用鏈中兩個連續的單元格,第乙個用來儲存鍵值,第二個用來儲存資料。

線性探測法的原理:它屬於一種更一般化的雜湊技術:開放定址雜湊。當發生碰撞時,檢查雜湊表中的下乙個位置是否為空,如果為空,則存入資料;如果不為

空,則繼續檢查下乙個位置,直到找到乙個空的位置為止。基於事實:每個雜湊表中都有很多空的單元格,可用它們儲存資料。

選擇哪種碰撞解決辦法:如果陣列大小是儲存資料個數的1.5倍,則使用開鏈法;如果陣列大小是儲存資料個數的2倍及2倍以上時,則使用線性探測法。

18.資料結構之集合

集合的重要特性:成員無序和成員不同

19.資料結構之二叉樹和二叉查詢樹

樹:是一種非線性的資料結構,以分層方式儲存資料。

二叉樹的優勢:在二叉樹上進行查詢非常快(而在鍊錶上查詢不是這樣),為二叉樹新增或刪除元素也非常快,(對陣列新增或刪除元素則不是這樣)

二叉查詢樹:它是一種特殊的二叉樹,相對較小的值儲存在左節點中,較大的值儲存在右節點中,該特性使得查詢的效率很高。

二叉樹生成的演算法:每次新插入的元素均與跟元素比較,若比它小,則插入到左邊,若左邊不為空,則迴圈查詢,知道找到空元素插入。若比根元素大,

與左邊相同,找到正確的插入點,則跳出迴圈。

二叉查詢樹的中序遍歷:按照節點的鍵值,以公升序訪問bst上的所有節點。

二叉查詢樹通常有以下三種型別的查詢:

1.查詢給定值

2.查詢最小值

3.查詢最大值

注意:從二叉查詢樹刪除節點最為複雜,其複雜程度取決於刪除哪個節點。

二叉查詢樹的應用場景:計數。

20.資料結構之圖和圖演算法

圖的邊的表示方法稱為鄰接表或鄰接表陣列。

圖的兩種搜尋演算法:深度優先搜尋和廣度優先搜尋

查詢最短路徑:圖最常見的操作之一就是尋找從乙個頂點到另乙個頂點的最短距離。

資料結構與演算法描述

資料結構是資料元素相互之間的關係,是相互之間存在一種或多種特定關係的資料元素的集合。乙個資料結構包含了以下三個方面的內容 資料元素之間的邏輯關係,也就是邏輯結構 就是給人看的 能畫出來的 資料元素及其關係在計算機記憶體中的表示,成為資料的儲存結構 就是給計算機看的 具體實現相關的 資料的運算和實現,...

資料結構與演算法Javascript描述(一)棧

棧的特點 後入先出。stack類 function stack function push element function pop function peek function clear function length 使用舉例 1 數制間的相互轉換 此演算法只針對基數為2 9 的情況。可以利用...

資料結構與演算法總結

本教材共十一章 第一章為資料結構與演算法概述,為本書學習基礎和預備知識。資料的邏輯結構是對資料之間關係的描述,有時就把邏輯結構簡稱為資料結構。邏輯結構形式地定義為 k,r 或 d,s 其中,k是 資料元素的有限集,r是k 上的關係的有限集。邏輯結構有四種基本型別 集合結構 線性結構 樹狀結構和網路結...