js資料結構和演算法(一)概述

2021-07-27 17:36:15 字數 2193 閱讀 5476

程式設計=資料結構+演算法
資料結構就是關係,沒錯,就是資料元素相互之間存在的一種或多種特定關係的集合。

傳統上,我們把資料結構分為邏輯結構和物理結構。

邏輯結構:是指資料物件中資料元素之間的相互關係,也是我們今後最需要關注和討論的問題。

物理結構:是指資料的邏輯結構在計算機中的儲存形式。

常用的資料結構有:

陣列,佇列(queue),堆(heap),棧(stack),鍊錶(linked list ),樹(tree),圖(graph)和雜湊表(hash)
棧(stack):運算只在表的一端進行;佇列(queue):運算只在表的兩端進行。

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

與棧相反,佇列是一種先進先出(first in first out, fifo)的線性表。

與棧相同的是,佇列也是一種重要的線性結構,實現乙個佇列同樣需要順序表或鍊錶作為基礎。

集合結構

線性結構

樹形結構

圖形結構

資料元素的儲存結構形式有兩種:順序儲存和鏈式儲存。

例如我們程式語言的陣列結構就是這樣滴。

鏈式儲存結構:是把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的。

鏈式儲存結構

線性表:就好像是排隊一樣,具有線一樣性質的結構,它是由零個或多個資料元素組成的有限序列。

若元素存在多個,則第乙個元素無前驅,而最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼。

若將線性表記為(a1,…,ai-1,ai,ai+1,…an),則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素。

資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。

例如很多程式語言的整型,浮點型,字元型這些指的就是資料型別。

在計算機中,記憶體不是無限大的,如果要計算或處理一些較大的數時,需要開闢較大的記憶體空間,於是就要對計算機進行資料型別分類,分出多種資料型別來適合各種不同的計算條件差異。

在c語言中,資料型別可以分為:

原子型別:不可以再分解的基本型別,例如整型、浮點型、字元型等。

結構型別:由若干個型別組合而成,是可以再分解的,例如整型陣列是由若干整型資料組成的。

演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。

演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性。

輸出:演算法至少有乙個或多個輸出。

有窮性:指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且每乙個步驟在可接受的時間內完成。

確定性:演算法的每乙個步驟都具有確定的含義,不會出現二義性。

可行性:演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成。

正確性:演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反映問題的需求、能夠得到問題的正確答案。

高階語言編寫的程式在計算機上執行時所消耗的時間取決於下列因素:

1. 演算法採用的策略,方案

2. 編譯產生的**質量

3. 問題的輸入規模

4. 機器執行指令的速度

我們可以想象,線性表有兩種物理儲存結構:順序儲存結構和鏈式儲存結構。

線性表的順序儲存結構,指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。

線性表(a1,a2,…,an)的順序儲存如下:

#define maxsize 20    

typedef

int elemtype;

typedef

struct

sqlist;

總結下,順序儲存結構封裝需要三個屬性:

儲存空間的起始位置,陣列data,它的儲存位置就是線性表儲存空間的儲存位置。

線性表的最大儲存容量:陣列的長度maxsize。

線性表的當前長度:length。

如果插入位置不合理,丟擲異常;

如果線性表長度大於等於陣列長度,則丟擲異常或動態增加陣列容量;

從最後乙個元素開始向前遍歷到第i個位置,分別將它們都向後移動乙個位置;

將要插入元素填入位置i處;

線性表長+1。

資料結構pintia 資料結構和演算法(一)概述

資料結構,用來描述資料間的關係 演算法,指解決某一特定問題的步驟 資料結構為演算法服務,演算法是特定問題下的解決辦法,故沒有通用性演算法,應具體問題具體分析 一 資料結構 以上為資料結構的邏輯結構,在計算機內部的物理儲存結構有 順序結構,鏈式結構 索引結構和雜湊結構。二 演算法 三 學習目標 資料結...

演算法與資料結構 一 概述

資料結構是計算機儲存 組織資料的方式。是指相互之間存在著一種或多種關係的資料元素的集合和該集合中資料元素之間的關係組成。簡單來說就是將資料按照特定的結構來儲存,也就是資料怎麼存 相鄰的資料元素存放的位址也是相鄰的,儲存密度等於1,比如陣列 儲存時的資料元素存放的位址不一定時相鄰的,使用指標實現元素之...

資料結構與演算法 一 概述

資料結構與演算法 二 稀疏陣列與佇列 資料結構與演算法 三 鍊錶 資料結構與演算法 四 棧 資料結構與演算法 五 遞迴 演算法是程式的靈魂,優秀的程式可以在海量資料計算時,依然保持高速計算 一般來講,程式會使用了記憶體計算框架 比如 spark 和快取技術 比如 redis 等 來優化程式 目前程式...