首頁>技術>

一、什麼是資料結構

官方定義:資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。程式設計=資料結構+演算法

二、資料結構中結構的概念

資料結構包括邏輯結構和物理結構

邏輯結構

指反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後關係,而與他們在計算機中的儲存位置無關。邏輯結構分為以下四類:

1.集合結構集合結構中的資料元素同屬於一個集合,他們之間是並列的關係,除此之外沒有其他關係。

2.線性結構線性結構中的元素存在一對一的相互關係。

3.樹形結構樹形結構中的元素存在一對多的相互關係。

4.圖形結構圖形結構中的元素存在多對多的相互關係。

物理結構

物理結構又叫儲存結構,指資料的邏輯結構在計算機儲存空間的存放形式。通俗的講,物理結構研究的是資料在儲存器中存放的形式。 儲存器主要針對於記憶體而言,像硬碟、軟盤、光碟等外部儲存器的資料組織通常用檔案結構來描述。資料在記憶體中的儲存結構,也就是物理結構,分為兩種:順序儲存結構和鏈式儲存結構。

1.順序儲存結構順序儲存結構:是把資料元素存放在地址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的。陣列就是順序儲存結構的典型代表。

2.鏈式儲存結構鏈式儲存結構:是把資料元素存放在記憶體中的任意儲存單元裡,也就是可以把資料存放在記憶體的各個位置。這些資料在記憶體中的地址可以是連續的,也可以是不連續的。和順序儲存結構不同的是,鏈式儲存結構的資料元素之間是透過指標來連線的,我們可以透過用指標來找到某個資料元素的位置,然後對這個資料元素進行一些操作。

三、演算法

演算法就是求解一個問題所需要的步驟所形成的解決方法,每一步包括一個或者多個操作。無論是現實生活中還是計算機中,解決同一個問題的方法可能有很多種,在這N多種演算法中,肯定存在一個執行效率最快的方法,那麼這個方法就是最優演算法。

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

輸入一個演算法具有零個或者多個輸入。以刻畫運算物件的初始情況,所謂0個輸入是指演算法本身定出了初始條件。

輸出演算法至少有一個輸出。也就是說,演算法一定要有輸出。輸出的形式可以是列印,也可以是返回一個值或者多個值等。也可以是顯示某些提示。

有窮性演算法的執行步驟是有限的,演算法的執行時間也是有限的。

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

可行性演算法是可用的,也就是能夠解決當前問題。

四、演算法的設計要求

要設計一個好的演算法,需要考慮以下4個特性。

正確性廢話,誰會設計一個不能夠解決問題的方法。

可讀性指演算法無論是從設計思路上,還是從註釋方面,都要能夠保證演算法是可讀的,也就是可以被其他人員能夠讀懂的。

健壯性通俗的講,一個好的演算法應該具有捕獲異常/處理異常的能力。另外,對於測試人員的壓力測試、邊界值測試等刁難的測試手段,演算法應該能夠輕鬆地扛過去。

時間效率高和儲存量低這其實是兩個概念,時間效率就是指的時間複雜度,儲存量就是指的空間複雜度。翻譯過來就是一個好的演算法應該考慮時間複雜度和空間複雜度。而往往時間複雜度和空間複雜度是相互彌補的。也就是從某些角度,我們可以了透過犧牲演算法運算時間的方式來減少對記憶體的佔用,反之亦然。

8
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 刷演算法題時如何評估和提升自己的能力?