資料結構是計算機儲存、組織資料的方式目前只需要記住這點就可以了
一般的資料結構都有以下四種操作:讀取,查詢,插入,刪除
我們一般說明乙個程式的執行速度,就是看以上四種操作的步數的多少
同時,我們也知道了第乙個重要理論:操作的速度,並不按時間來計算,而是按步數計算(由於新舊計算機效能的差距,我們不能直接按時間來計算快慢,兩個計算機可能就會有兩個時間,而直接用步數計算是最合適的)
操作的速度,也常常被稱為時間複雜度
我們來看一下乙個普通陣列的四種操作,普通陣列也可以稱為是乙個資料結構
int arr = ;
1) 讀取
乙個普通陣列的讀取只需要一步就夠了,因為陣列本身就是用一串連續的位址儲存這資料,計算機有直接跳到任意乙個記憶體位址的能力
2)查詢
相對於讀取,查詢就要複雜一些,比如我們想要找到值為3的那個位置,雖然我們可以一眼直接看出來,但是計算機不行,一般來說需要乙個乙個位址的檢視直到找到為止.乙個長度為5的陣列最多需要5步,隨著陣列的長度變化而變化,假設陣列有n個元素,查詢需要的最多步數就是n
3)插入
如果我們想要在陣列中插入元素,需要將插入位置後面的元素全部往後面移動,那麼我們最壞的情況就是在第乙個位置插入,後面所有的元素都進行移動,共需要n+1步(n次移動,1次插入),同樣是與陣列長度有關
4)刪除
刪除其實與插入類似,因為刪除乙個元素要把後面的元素向前移動,最壞情況同樣是刪除第乙個,n步(1次刪除,n-1次移動)
以上就是一些最基本的概念,接下來我們就要想辦法縮小查詢需要的步數
假如我們要查詢上面陣列中 3 的位置,按照正常從頭到尾查詢的辦法我們需要把陣列全部遍歷一遍,因為3其實是在最後一位,那麼這個時候我們不妨用另外一種格式來儲存這個陣列再看一看
int arr =
和第乙個陣列儲存的資料相同,但是只是把它變成了乙個有序的陣列,從小到大依次排列,這樣只需要查詢3次就可以找到,雖然最壞情況,假如要查詢5,依然需要用5次,實際情況還是與陣列長度有關,但是平均情況是要好於無序陣列的,相對而言上面這個陣列在插入的時候就要進行相對複雜的操作了,需要先遍歷找到他自己的位置(大於前乙個,小於後乙個)
所以要根據實際情況決定用哪一種,頻繁檢視盡量用有序儲存,插入多而檢視少可以用無序
只看到這裡,你可能並不覺的換了一種儲存方式有多麼有用,至少上面的例子並不明顯,那麼下面,我們就要引用乙個名為演算法的概念來側面展示有序陣列比無序陣列好在**
演算法通俗來講就是解決問題的步驟
我們小時候可能都玩過一種遊戲,我心裡想1-100任意乙個數,讓你來猜,如果猜錯我回答大了還是小了,知道猜對
這個遊戲最好的猜法就是二分法,顧名思義,我先猜50,如果大了就只需要猜比50小的數字就可以了,每次將範圍縮小一半直到猜中,這種方式的最壞情況是 要查詢7次 ,100/2 最多除以7次就能除盡,而上一節用的線性查詢從頭開始查到尾,最多就需要100步
而這種方式只可以用於有序陣列,無序陣列肯定是不可以用這種比大小看範圍的操作的,這樣一來是不是就可以理解一些資料結構對於效能的影響了呢
//二分查詢法的簡單實現
int main()
int begin = 0; //第乙個下標
int end = 99; //最後乙個下標
int middle = (end + begin) / 2; //二分後的下標
int a = 66; //要查詢的元素
//如果沒有找到就一直迴圈
while (arr[middle] != a) else
//找到新的中間數,繼續判斷
middle = (end + begin) / 2;
}cout << "要查詢的" << a << " 在第" << middle + 1 << "位置" << endl;
system("pause");
return 0;
}
資料結構和演算法 一 資料結構和演算法概念
bilibili黑馬2020版資料結構和演算法教程 2020版資料結構和演算法 首先我們要知道什麼是資料結構 官方解釋 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。通俗點講 它是乙個操作物件,用來把資料元素按照一定的關係組織起來的集合,用來組織和...
資料結構和演算法 一 緒論
資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等 相關問題的學科。程式設計 資料結構 演算法 資料結構用一般的普識的語句來說就是資料元素之間的關係 一種或多種特定關係的集合 一般來說我們把資料結構分為 邏輯結構和物理結構 邏輯結構 是指資料物件中資料元素之間的相互關...
資料結構pintia 資料結構和演算法(一)概述
資料結構,用來描述資料間的關係 演算法,指解決某一特定問題的步驟 資料結構為演算法服務,演算法是特定問題下的解決辦法,故沒有通用性演算法,應具體問題具體分析 一 資料結構 以上為資料結構的邏輯結構,在計算機內部的物理儲存結構有 順序結構,鏈式結構 索引結構和雜湊結構。二 演算法 三 學習目標 資料結...