學資料結構的意義和需要了解的基礎知識

2021-09-02 19:19:47 字數 1338 閱讀 4752

本人為初學者,此文為學習的一些總結,如有不當之處,還請多多包涵。

要說起學習資料結構的意義,不得不先說一下,cpu,記憶體,磁碟(硬碟或固態硬碟)。

首先,cpu中的儲存空間很小,基本可以忽略不計,(造價太貴),其次是記憶體(造價也很貴),再其次是磁碟(硬碟一般很大,因為造價最便宜)。資料在磁碟中為鏈式儲存,在記憶體中既有鏈式儲存,又有順序儲存。

每個磁碟有兩個機械臂,在其兩側,每次讀取時,就開始轉圈讀取,筆記本一般是5400r/分鐘,台式一般是7200r/分鐘,伺服器一般是10000r/分鐘。磁碟的材料好像是矽,矽分正負電極,在讀取時,分別對應二進位制中的0和1。

如果cpu直接從磁碟中讀取的話,消耗的時間是巨大的,這也是記憶體存在的意義,先將資料從磁碟轉到記憶體,再從記憶體轉移到cpu,因為將資料從磁碟到記憶體比從磁碟到cpu要快很多。

每個磁碟在格式化時都需要指定分配單元塊的大小,在儲存時,不滿乙個單元塊的佔乙個單獨的單元塊。為什麼電腦用很久之後會很卡?就是因為,隨著時間的推移,剛開始的資料的儲存都是緊挨著的,隨著刪除等的操作,出現了很多的瑣碎的空間,正是因為這些瑣碎的空間,使得比較大的資料無法連續的儲存,在呼叫的時候,就比較消耗時間。這些操作稱為io操作(輸入輸出的操作)。

預設為4kb,一般大的資料單元格需要設定大一些,小的資料應該設定的小一些(讓不然浪費的空間會很多)。

位址連續的儲存和位址不連續的儲存都有各自的優勢和劣勢,有沒有乙個比較好的能夠涵蓋這兩個呢?這就是順序二叉樹!該結點的左側都比它小,右側都比它大。(或者反過來)

增刪改查四種操作中:

增操作,每一層只需要比較一次,依次比較,新增到合適的位置,其演算法複雜度o(log(n))級別。

刪除操作,只需要找到該結點左子樹中的最大值(最右側)或者其右子樹中的最小值(最左側)來代替該結點即可,演算法複雜度也為o(log(n))級別。

改操作,就是刪除操作和增操作的結合,先將該數刪了,再增加乙個數,演算法複雜度為o(log(n))級別。

查操作就很直接,直接比較,找到為止,演算法複雜度也為o(log(n))級別。

棧有何用?

例如乙個簡單的程式如下:

int i,j;

}

其如何實現的呢?先將i,j入棧,再將x,y入棧,再將z入棧,第乙個括號結束,z出棧,第二個括號結束,x,y出棧,最後i,j出棧。

學資料結構的意義:

主要是針對記憶體來說的,用來優化記憶體。以及在處理大資料的時候可以讓計算機以更高的效率來執行。

遊戲策劃需要了解的網遊資料結構

抽象的網路遊戲架構 網路遊戲之所以叫做mmog,是因為mmog必須得達到以下幾個條件才可以進行遊戲 玩家們的電腦必須得接通internet 必須有網路服務端 以上兩個條件缺一不可。因此,網路遊戲的架構從概念上就分為了服務端和客戶端。客戶端指的就是玩家們電腦上安裝的遊戲程式 而服務端則是遊戲服務商所提...

筆記 前端需要了解的常見資料結構 棧

棧是乙個線性結構,在計算機中是乙個相當常見的資料結構。棧的特點是只能在某一端新增或刪除資料,遵循先進後出的原則。每種資料結構都可以用很多種方式來實現,其實可以把棧看成是陣列的乙個子集,所以這裡使用陣列來實現。class stack push item pop peek getcount isempt...

筆記 前端需要了解的常見資料結構 佇列

佇列是乙個線性結構,特點是在某一端新增資料,在另一端刪除資料,遵循先進先出的原則。這裡會講解兩種實現佇列的方式,分別是單鏈佇列和迴圈佇列。class queue enqueue item dequeue getheader getlength isempty 因為單鏈佇列在出隊操作的時候需要 o n...