數據結構與算法系列--初識數據結構

          Hellow,everybody ! 有段時間沒與你們見面了,從此我會與你們一塊兒學習數據結構與算法。好吧,讓我先講講我對數據結構與算法的見解與想法吧。算法

宋桑沒有離開公司時,強烈推薦我利用如今富裕的時間去研究一下計算機科學的四大方面。我也是在他的encourage下,首次聽到數據機構與算法的。在這方面他說的最多的一句話是:」.NET、JAVA、PHP,這些高級語言,可能會被從此更加牛叉的高級語言所取代。可是計算機科學的四大方面是底層東西,三四十年不會改變。」我是這麼理解他這句話的,編程比如是一位sexy lady,U wanna got it.編程

那麼就要去理解她喜歡什麼,本身怎麼作,她才能接受我。數據結構就是編程的須要,因此要想學好編程,必定要先把最神祕的高地攻克----數據結構。數據結構

   書歸正傳,自從認識了宋桑,我整我的變得頗有衝勁,很自信。以前遇到問題,想學習一些知識,只是想讓人手把手教。可是,如今我有信心,你們都是人,別人能夠學會的知識,我也必定能夠。自學,是本身必定要掌握的技巧。不論從此會不會一直作IT,都要掌握這個技巧。so……我要自學數據結構與算法。我就要把她們當成是sexy lady ,我要拿出攻城拔寨的勇氣、毅力、決心去拿下她。宋桑給我推薦了一本《大話數據結構》,這是一本適合入門的關於數據結構與算法的書籍,強烈推薦想自學或想入門的數據結構愛好者能夠買一本看看。首先,我把這本書的目錄摘出來,讓你們對《大話數據結構》能夠有個清晰的認識。函數

     1、數據結構的緒論學習

1.1 數據結構的起源spa

1.2 數據結構術語設計

1.3   邏輯結構與物理結構3d

1.4抽象數據類型對象

    2、算法blog

2.1數據結構與算法

2.2兩種算法的比較

2.3算法的定義

2.4算法的特性

2.5算法設計的要求

2.6算法效率的度量方法

2.7 函數漸進增長

2.8算法的時間複雜度

2.9常見的時間複雜度

2.10  最壞狀況與平均狀況

2.11算法的空間複雜度

 

     3、線性表

3.1線性表的定義

3.2線性表的抽象數據類型

3.3線性表的順序存儲結構

3.4順序存儲結構的插入與刪除

3.5線性表的鏈式存儲結構

3.6單鏈表的讀取

3.7單鏈表的插入與刪除

3.8單鏈表的整表建立

3.9單鏈表的整表刪除

3.10單鏈表結構與順序存儲結構的優缺點

3.11靜態鏈表

3.12循環鏈表

3.13雙向鏈表

    4、棧與隊列

4.1棧的定義

4.2棧的抽象數據類型

4.3棧的順序存儲結構及實現

4.4兩棧共享空間

4.5棧的鏈式存儲結構及實現

4.6棧的應用

4.7棧的應用----遞歸

4.8棧的應用----四則運算表達式求值

4.9隊列的定義

4.10隊列的抽象數據類型

4.11循環隊列

4.12隊列的鏈式存儲及實現

 

  5、串

5.1串的定義

5.2串的比較

5.3串的抽象數據類型

5.4串的存儲結構

5.5樸素的模式匹配算法

5.6KMP模式匹配算法

 

  6、樹

6.1樹的定義

6.2樹的抽象數據類型

6.3樹的存儲結構

6.4二叉樹的定義

6.5二叉樹的性質

6.6二叉樹的存儲結構

6.7遍歷二叉樹

6.8二叉樹的創建

6.9線索二叉樹

6.10樹、森林與二叉樹的轉換

6.11赫夫曼樹及其應用

7、圖

7.1圖的定義

7.2圖的抽象數據類型

7.3圖的存儲結構

7.4圖的遍歷

7.5最小生成樹

7.6最短路徑

7.7拓撲排序

7.8關鍵路徑

8、查找

8.1查找的概論

8.2順序表查找

8.3有序表的查找

8.4線性索引查找

8.5二叉排序樹

8.6平衡二叉樹

8.7多路查找樹

8.8散列表查找(哈希表)概述

8.9散列函數的構造方法

8.10處理散列衝突的方法

8.11散列表查找實現

9、排序

9.1排序的基本概念與分類

9.2冒泡排序

9.3簡單選擇排序

9.4直接插入排序

9.5希爾排序

9.6堆排序

9.7並歸排序

9.8快速排序

      

                   這就是整本書的目錄了,看來宋桑的話很對。要學會寫博客,知識就是在概括複習中掌握的。溫故而知新,能夠爲師矣。就在我剛纔摘錄整本書的目錄時,我對整本書的大體內容有了一個全面的理解。說實話,以前有看過一遍,粗略的看了一遍。看完一點印象都沒有。閱讀一本書,必定要明白書中要講的東西是什麼,怎麼展開的。因此,目錄很重要。這是數據結構與算法系列的受篇文章,那麼就讓咱們從這個目錄的第一部分開始吧。

         1、數據結構的緒論

1.1數據結構的起源

1968年,美國的高德納教授在他的《計算機程序設計藝術》第一卷《基本算法》中,較爲詳細的闡述了數據結構。同年,講數據結構獨立爲一門學科。以後,70年代出現了大型的程序,軟件也相對獨立。人們認爲程序設置的實質是對肯定問題選擇一種好的結構,加上一個好的算法。程序設計=數據結構+算法這是一條定律。

             1.2基本概念和術語

             數據:是計算機能夠處理的符號集合。

數據元素:是組成數據的,有必定意義的基本單位。在計算機中一般做爲總體處理。

數據項:一個數據元素由若干個數據項組成。數據項是數據不可分割的最小的單位。

數據對象:是相同數據元素的集合,是數據的子集。

數據結構:結構就是關係,不一樣的數據元素之間不是獨立的,而是存在某種關係。咱們將這些關係稱爲結構。數據結構,就是彼此之間存在一種或多種特定關係的數據元素的集合。

1.3邏輯結構與物理結構

邏輯結構,就是數據對象中數據元素之間的關係。

邏輯結構分爲四類:

1.集合結構

各個數據元素除了同屬於一個集合中,沒有任何聯繫。

QQ Photo20140521135506

2.圖形結構

數據元素之間是多對多的關係

QQ Photo20140521135603

3.樹形結構

數據元素是一對多的關係

QQ Photo20140521135637

3.線性結構

數據元素之間是一對一的關係

QQ Photo20140521135719

物理結構(存儲結構),邏輯結構在計算機中的存儲形式。

物理結構分爲兩種:

順序存儲:數據元素存放在連續的地址中。

鏈式存儲:數據元素能夠存放在連續的地址,也但是不連續的地址。

1.4 抽象數據類型

    數據類型:一組相同性質的值的集合及定義在此集合上的操做總稱。你們能夠把他當作是C#裏定義的一個類,類有屬性、方法。

抽象數據類型:一個數據模型,及定義在此模型上的操做。

抽象數據類型的描述:

QQ Photo20140521140729

 

最後讓咱們用一張圖來總結一下本章的內容:

QQ Photo20140521140852

 

QQ Photo20140521140927

這就是數據結構緒論的主要內容了。Next,算法。Come on!

相關文章
相關標籤/搜索