字面意思就是研究資料的一種方法,就是研究資料在程式中組織的一種方法。資料結構就是,元素與元素有一種或者多種關係的集合,在軟體界有一種比較普片的公式就是程式 = 資料結構 + 演算法。
(1)集合(set) 和數學的集合一樣,具有唯一性,確定性,無序性。
(2)線性結構 典型的資料庫二維表,一對一的關係。
(3)樹形結構 就有一對多的關係,族譜就是典型的樹形結構。
(4)圖形結構 具有多對多的關係,典型的就是交通路線圖。
字面意思就是計算的方法,解決問題的方案,就是對莫一特定問題求解過程的一種描述,是指令的有限序列。用源**體現,演算法就是程式設計的體現。乙個演算法必須要具備以下幾個特徵:
(1)有窮性。演算法在執行有窮步驟之後結束,不會永遠的執行下去,這樣就成死迴圈了。
(2)確定性。演算法執行每一步都具有確切的含義,無二義,即每次輸入相同,輸出必然相同。
(3)輸入。乙個演算法必然有乙個或者多個輸入,不然演算法就沒什麼意思了。
(4)輸出。乙個演算法有乙個或者多個輸出,演算法就是為了得到輸出的資料,沒有輸出的資料演算法,叫不上演算法。
(5)能行性。演算法中的每一步都可以通過已經實現的基本運算的有限次執行來實現。這與有窮性息息相關。
(1)正確性,(2)健壯性,(3)可讀性,(4)執行時間,(5)占用空間。
前三個都比較好理解,與程式相關的就是執行時間和占用空間了。而隨著硬體越來越貴,我們可以增加硬體裝置,面對海量的資料,我們尤其關心的就是執行時間了,這此時,計算機執行時間大概由下面幾個條件來決定了。
1、硬體條件。包括所使用的處理器的型別和速度(比如,使用雙核處理器還是單核處理器) 、可使用的記憶體(快取和 ram)以及可使用的外存等。
2、實現演算法所使用的計算機語言。實現演算法的語言級別越高,其執行效率相對越低。
3、所使用的語言的編譯器/直譯器。一般而言,編譯的執行效率高於解釋,但解釋具有更大的靈活性。
4、所使用的作業系統軟體。作業系統的功能主要是管理計算機系統的軟體和硬體資源,為計算機使用者方便使用計算機提供乙個介面。各種語言處理程式如編譯程式、解釋程式等和應用程式都在作業系統的控制下執行。
評價執行時間就是乙個演算法時間複雜度, 乙個演算法的時間複雜度(time complexity)是指該演算法的執行時間與問題規模的對應關係。
演算法中的基本操作一般是指演算法中最深層迴圈內的語句,因此,演算法中基本操作語句的頻度是問題規模n的某個函式f(n),記作:t(n)=o(f(n))。其中「o」表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,或者說,用「o」符號表示數量級的概念。 這些 都只是一些理論的概念,我們這裡用計時器來證明這個理論概念。
如:①x=n; /*n>1*/
y=0;
while(y < x)
從理論上分析這是一重迴圈的程式,while 迴圈的迴圈次數為 n,所以,該程式段中語句①的頻度是 n,則程式段的時間複雜度是 t(n)=o(n) 。
評價執行時間就是乙個演算法時間複雜度, 乙個演算法的時間複雜度(time complexity)是指該演算法的執行時間與問題規模的對應關係。
演算法中的基本操作一般是指演算法中最深層迴圈內的語句,因此,演算法中基本操作語句的頻度是問題規模n的某個函式f(n),記作:t(n)=o(f(n))。其中「o」表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,或者說,用「o」符號表示數量級的概念。 這些 都只是一些理論的概念,我們這裡用計時器來證明這個理論概念。
如:①x=n; /*n>1*/
y=0;
while(y < x)
從理論上分析這是一重迴圈的程式,while 迴圈的迴圈次數為 n,所以,該程式段中語句①的頻度是 n,則程式段的時間複雜度是 t(n)=o(n) 。
由此證明,其中演算法的時間複雜度確實是接近於o(n²)
③x=n; /*n>1*/
y=0;
while(x >= (y+1)*(y+1))
這是一重迴圈的程式,while 迴圈的迴圈次數為 n,所以,該程式段中語句①的頻度是 n,則程式段的時間複雜度是 t(n)=o(√n) 。
C 資料結構與演算法揭秘一
這裡,我們 來說一說c 的資料結構了。什麼是資料結構。資料結構,字面意思就是研究資料的方法,就是研究資料如何在程式中組織的一種方法。資料結構就是相互之間存在一種或多種特定關係的資料元素的集合。程式界有一點很經典的話,程式設計 資料結構 演算法。用源 來體現,資料結構,就是程式設計。他有哪些具體的關係...
C 資料結構與演算法揭秘13
這節,我們來看看一下什麼了,來看看圖的遍歷吧!首先,搞清楚,圖的遍歷的基本的含義了。圖的遍歷是指從圖中的某個頂點出發,按照某種順序訪問圖中的每個頂點,使每個頂點被訪問一次且僅一次。圖的遍歷與樹的遍歷操作功能相似。圖的遍歷是圖的一種基本操作,並且圖的許多其他操作都是建立在遍歷操作的基礎之上的。遍歷示意...
C 資料結構與演算法揭秘二
上文對資料結構與演算法,有了乙個簡單的概述與介紹,這篇文章,我們介紹一中典型資料結構 線性結構。什麼是線性結構,線性結構是最簡單 最基本 最常用的資料結構。線性表是線性結構的抽象 abstract 線性結構的特點是結構中的資料元素之間存在一對一的線性關係。這 種一對一的關係指的是資料元素之間的位置關...