【數據結構】如何高貴優雅地理解什麼是數據結構?

一坑沒填

又進新坑......

不過這個坑遲早都要進的......

——————————————下面是正文————————————————

       文章開頭首先了解下從百度百科上搜刮下來的一句計算機業界經典金句:

                                             算法+數據結構=程序

       ps:對於這個公式,其實個人(注意:是個人!!)更偏向於“程序=算法+數據結構”醬紫的表達,因爲大部分的編程語言都是將賦值號右邊的數據運算完成之後再賦值給賦值號左邊的容器裏,所以“程序=算法+數據結構”更能體現出這種含義~如果是“算法+數據結構=程序”給我的第一感覺是程序賦值給了算法+數據結構,編譯還可能是錯的hiahiahiahia~

       金句之所以可以成爲金句,是因爲程序即使千變萬化,形態各異,但終究離不開一個最關鍵、最基本的功能:對數據進行處理。而如何對數據進行怎樣的處理呢?這就是算法需要做的事情了。所以呀,能用一個公式就將一個這麼抽象的東西概括起來,成爲金句確實不爲過~(在座的各位大佬們可以思考一下,各位以前寫過的程序裏面有多少程序是可以脫離數據的?大部分都是圍繞着數據進行某些處理,而這個處理就是經過算法的啦~)

       說了這麼多,其實還是不太懂得什麼是數據結構,下面給出對我這種菜菜的人來說複雜又難懂的關於數據結構的概念:

        

       我在大學必修課裏看過還有一種說法是(具體是哪本教材我也忘記惹):數據結構是數據以某種特定的方式組合在一起。

       下面給出一個例子,帶各位高貴又優雅地瞭解數據結構是什麼~

一.例子

       此時,某一無名大學終於完成了最後的期末考試,全校三萬多人的成績全部彙總到了教務處一名負責成績登錄的老師手中,那麼這名老師該如果將着三萬個人的成績進行一個合理的彙總呢?此時有位老師說,你可以將這寫數據全部放到一個Ecel表格裏面就行啦~

       然後負責成績登錄的老師就微笑着照做了......

       第二天,高中部的老師突然發現自己改錯了一名學生的成績,所以要求負責成績登錄的老師將這名學生的成績進行修改

       這時,負責成績登錄的老師慌了,因爲自己手上只有三萬個成績,並不知道那個成績是該名學生的,此時有位老師說,你應該將每個成績都對應上學生的名字呀,這樣才能知道成績是誰的啦~

       然後負責成績登錄的老師就微笑着照做了......

       第三天,初中部的學生對自己的成績有異議(60分),要求重新評分,評分老師重新評改後,給負責成績登錄的老師更新了一個新的成績(59分)

       這時,負責成績登錄的老師慌了,因爲自己手上的三萬個成績,如果要找到其中一個人的成績,需要從第一個開始一直往下找,結果等負責成績登錄的老師找到那個學生的名字時已經是晚上了,此時有位老師說,你可以將成績分高中部、初中部,這樣查找就更方便啦~

       然後負責成績登錄的老師就微笑着照做了......

       第四天,初中部的老師猛地發現自己少給了一位同學的成績,通知負責成績登錄的老師將這名同學的成績加上去

       這時,負責成績登錄的老師慌了,因爲根據Excel表格的特性,在某個位置添加一行表格雖然不是很難,但是後面的成績就要全部往後退,那前面分類之類的又要全部進行修正,結果負責成績登錄的老師需要加班加點才能搞完。

二.總結

       綜上所述,對於一堆數據,這裏面有一個問題,就是如何高效地進行存儲和表達,而這就是數據結構的一個最根本的問題。如以上例子所述,爲了能夠快速地對成績進行查找、修改、增加或者刪除,需將數據進行名字分類,班級分類以及年級分類等,使得數據具有規律性、便於查找性,而這種數據間相互存在着一種或多種特定關係的,稱之爲數據結構。爲此,類似於“樹”、“圖”、“隊列”這種數據結構就被探索出來,每種不同的數據結構都有自己的特定的有點,有些方便存儲,有些方便添加數據~

三.優點

        數據結構最大的有點是可以提高解決問題的效率,如上例子所述,如果不將數據進行結構化的處理,那麼當有問題需要使用到數據時,解決問題的效率就會非常低下。當然,提高解決問題的效率不單止數據結構,算法的靈活程度,代碼空間的最大利用,都將影響到最後整個程序的效率,這個又是後話了~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章