之前關於資料和資料結構以及資料演算法的理解很模糊,或者說不準確,今天好好的理解了一遍。 自己舉了乙個例子希望覺得還可以,分享出來希望幫到一點大家。
例子:燒開一壺水。
正常我們燒開一壺水,步驟通常是
先把水匯入水壺,把水壺放在火上,等到水開,把火關掉。(什麼電燒水,劈材燒水就不要想了,不再討論範圍內)
上面4個步驟可以理解為「演算法」。 這裡也可以體會下演算法的幾個特性:
輸入輸出
有窮性確定性
可行性解釋: 輸入的水,輸出的開水,5個步驟為有窮性,每個步驟做什麼一目了然,不重複不含糊為確定性,可行性就是這幾個步驟確實可行,步驟2不是說要你把水壺放在長征一號的發射台加熱。
說完了演算法來說下資料
資料是計算機的核心。 你可以把上面的水理解為資料,你要有水了才會去執行上面5個步驟,沒水你玩什麼。
說完了資料。來說下資料結構
說到資料結構,需要先說下資料結構分為資料的邏輯結構和資料的實際儲存結構。
正如上面的例子,水(資料),水的分子式都是h2o, 我們可以理解為,h2o是水的實際結構,乙個氧原子附近兩個氫原子,而通常看見的自來水和礦泉水是一種外在的表現形式。相對應資料來說,資料實際儲存在硬碟光碟等介質中的樣子就是資料的儲存結構,而對外表現的時候,程式設計師程式設計用的時候,就會變成通常的形式,比如程式設計時候的陣列是一種資料的邏輯結構,而在記憶體中是資料是用乙個順序儲存的二叉樹來儲存等。
資料結構分為邏輯結構和實際儲存結構,邏輯結構我理解就是程式設計的一般所見。 實際的結構分為,線性表,棧,佇列,串,陣列和樹以及圖。
線性結構和非線性結構
這些資料結構按照元素之間的關係。可以分為線性結構和非線性結構。 線性結構就是元素之間乙個乙個排列,具有單一的前驅和後驅。 1-2-3-4 這種,線性表,棧,佇列,串 和陣列分為線性結構,一對一的關係。 樹和圖分為非線性結構,非線性結構就是元素之前相互聯絡,類似多對多的關係,一對多的關係。
順序儲存和鏈式儲存
順序儲存和鏈式儲存是指元素之間在記憶體中儲存的實現方式。 比如線性結構,元素之間都是乙個乙個排列的,但是實現乙個乙個排列,也是有不同方式的,比如1234567這種形式(順序儲存),7個元素之間乙個乙個緊密排列,1不需要指定下乙個元素是那個,因為一定是2。 也可以是1>2>3>4>5>6>7.這種方式(鏈式儲存),由前乙個元素1指定下乙個元素2。指定的方式其實所說就是大家肯定在其他地方聽過或者見過的指標,頭指標,尾指標。
演算法和資料結構
演算法和資料結構 演算法和資料結構 千絲萬縷的聯絡 縱觀各種演算法書籍,大多都是將演算法和資料結構作為乙個整體來講述。資料結構就是陣列 樹結構等儲存或表現物件資料的結構。將演算法和資料結構作為整體講述,是因為必須依照演算法中的常用操作選擇資料結構。例如,事先將資料儲存在適當的樹形結構中,大多數情況下...
演算法和資料結構
演算法 資料結構與演算法的關係是相互依賴不可分割的。演算法的定義 演算法是解決特定問題求解步驟的描述,在計算機中為指令的有限序列,並且每條指令表示乙個或多個操作。演算法的特性 有窮性 確定性 可行性 輸入 輸出。演算法設計的要求 正確性 可讀性 健壯性 高效率和低儲存量需求。演算法特性與演算法設計容...
演算法和資料結構
好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您,一開始或至少在我的情況下,我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟糕,您會告訴我 您知道,您甚...