資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科
程式設計=資料結構+演算法
傳統上,我們把資料結構分為邏輯結構和物理結構
邏輯結構:是指資料物件中資料元素之間的相互關係,也是我們今後最需要關注和討論的問題。
物理結構:是指資料的邏輯結構在計算機中的儲存形式。
集合結構:集合結構中的資料元素除了同屬於乙個集合外,它們之間沒有其他不三不四的關係
線性結構:線性結構中的資料元素之間是一對一的關係
樹形結構:樹形結構中的資料元素之間存在一種一對多的層次關係
圖形結構:圖形結構的資料元素是多對多的關係
儲存器主要是針對記憶體而言的,如硬碟,軟盤
資料元素的儲存結構形式有兩種:順序儲存和鏈式儲存
是把資料元素存放在位址連續的儲存單元裡,其資料間的邏輯關係和物理關係是一致的。
是把資料元素存放在任意的儲存單元裡,這組儲存單元可以是連續的,也可以是不連續的
演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的優先序列,並且每條指令表示乙個或多個操作
演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性
—— 演算法具有零個或多個輸入
—— 儘管對於絕大多數演算法來說,輸入引數都是必要的。但是有些時候,像列印「i love fishc.com", 就不需要引數。
void print()
——演算法至少有乙個或多個輸出。
——演算法是一定要輸出的,輸出的形式可以是列印形式輸出,也可以是返回乙個值或多個值等。
—— 指演算法在執行有限的步驟之後,自動結束而不會出現無限迴圈,並且沒乙個步驟在可接受的時間內完成。
——演算法的每乙個步驟都具有確定的含義,不會出現二義性。
——演算法在一定條件先,只有一條執行路徑,相同的輸入只有唯一的輸出結果。
——演算法的每個步驟都應該被精確定義而無歧義
*——演算法的每一步都必須是可行的,也就是說,每一步都能夠通過執行有限次數完成。
正確性
——演算法的正確性是指演算法至少應該具有輸入、輸出和加工處理無歧義性、能正確反應問題的需求、能夠得到問題的正確答案。
——大體分為以下***四個層次***:
演算法程式沒有語法錯誤。演算法程式對於合法輸入能夠產生滿足要求的輸出。演算法程式對於非法輸入能夠產生滿足規格的說明演算法程式對於故意刁難的測試輸入都有滿足要求的輸出結果。
可讀性
如題健壯性
時間效率高和儲存量低
資料結構與演算法(緒論)
作為乙個準程式設計師,在讀本科的時候,就一直被老師不停的灌輸資料機構與演算法的重要性,但是好像我們從來就沒遇到過真正棘手的需要通過資料結構去解決的問題,可能唯一再聽到它的時候就是找工作實習的時候會被面試官提問,因此我們似乎覺得資料結構沒那麼重要,而且又因為各種程式語言,尤其是python,各種內建的...
資料結構與演算法 緒論
一般法則 法則1 for迴圈 乙個for迴圈的執行時間至多是該for迴圈內部那些語句的執行時間乘以迭代的次數。法則2 巢狀的for迴圈 從裡向外分析這些迴圈。在一組巢狀迴圈內部的一些語句總的執行時間為該語句的執行時間乘以該組所有的for迴圈的大小的乘積 例如,下列程式片斷為o n2 for i 0 ...
資料結構與演算法 緒論
重要性 使用者資訊表usersid name 001 bigsai man002 smallsai man003 菜虛鯤woman users的pojo物件 class users list和woman是資料 listlist 資料物件list listwoman 資料物件woman list.ad...