最近在學習各種資料結構,於是就在想,為什麼我們需要資料結構呢? 為什麼要設計這麼多資料結構?資料結構到底解決了我們什麼樣的問題?
我們提到 資料結構 時,一般是指電腦科學中的乙個概念, 但是從本質上講,資料結構應該是指對資料的一種組織方式。既然如此,我們沒必要非在電腦科學領域中討論 概念本身,把它放在其它領域中,可能更能加強我們的理解。
就說圖書管吧,假如你是一名很久很久以前的圖書館管理員,那時候根本沒什麼計算機。資料結構?那是什麼?
你的任務就是看著圖書館裡的一堆書。於是,有一天,圖書館來了一堆書,你把他們堆成一堆,放在館裡。 這時候,有人來借書了,他只能在那一堆書裡亂翻,翻來翻去也找不到自己想要的書,因為那是一堆書, 有的書他檢查了很多次,有的一次也沒檢查。
這時候這堆書是乙個集合,不方便遍歷。時間長了,抱怨的人很多。
作為乙個怕麻煩的管理員,你忍受不了別人的抱怨,於是,你把那一堆書變成了一排書。
這下好了,來找書的人,只要從書架左邊走到右邊,按順序找就好了。只要書在圖書館裡,慢慢找總是可以找到。 但是,隨著圖書館的書越來越多,這樣找實在是太慢了,因為每次都要從第一本書找到最後一本書。
這時候這堆書是乙個列表,方便遍歷,但是不方便查詢。時間長了,抱怨的人很多。
作為乙個怕麻煩的管理員,你忍受不了別人的抱怨,於是,你把那一排書變成了很多類書。
那麼,按什麼分類呢?按書的大小麼?顏色麼?退一步講,分類的依據是什麼?
分類是為了加快讀者查詢書的速度,那麼讀者查詢書的時候,是按什麼查詢呢?是按書名。所以,我們對書名分類。 按書名分類也有許多種,按書名讀音麼?按書名筆畫嗎?按書名字數麼?我們很容易想到,按讀音分類給讀者的壓力最小, 也就是查詢前的開銷最小。否則每次找書之前還要數一下筆畫,讀者一定又會抱怨。
這時候,我們按讀音把書分類,書名第乙個字是a的在a書架,是b的在b書架。這下讀者查詢書的速度大大加快了, 因為一下子就能排除那麼多類書,而代價僅僅是想一下書名第乙個字的讀音。不過,我們馬上又發現,有的書架上書實在太多了, 那有什麼關係?這個問題我們解決過啊,只要再分類就好了,書名第乙個字我們用過了,現在用第二個字。
讀者終於大致可以滿意了。
這時候這些書架構成了乙個查詢樹,方便查詢。另外,我們注意到,其實對於管理員來說,他的負擔是增加了的,比如新來了一本書,如果圖書館是一堆書, 只要把新書扔在那一堆裡就好了,如果是一排書,要把新書放在這排書的最後,而如果是分好類的書架, 管理員就要先找到這本書的位置,再把新書放在那兒,而不能隨便放。好在分類後,我們找新書位置不會花多久, 假如分好類後,讀者查詢書方便了,但是管理員要把新書放在合適的位置,需要花一年時間, 那這個分類的方法肯定不是乙個好方法。
這告訴我們
維護資料結構很重要。這時候,我們在不知不覺間居然
設計了乙個資料結構
這時候,我們回到開始時的問題,為什麼我們需要資料結構?對應上面的故事, 為什麼我們要把一堆書變成多類書?簡單地說,這樣可以使找書的過程變快。 這正印證了維基百科詞條中的那句話。
資料結構是計算機中儲存、組織資料的方式。通常情況下,精心選擇的資料結構可以帶來最優效率的演算法。回頭想想,從一堆書變成多類書的過程,其實就是資料的組織方式發生了變化。我們來抽象一下整個過程。
那麼,關鍵的地方就在於:
根據操作o,找到性質p,設計資料結構s,使s有性質p,同時使額外資訊ei,額外操作eo盡量小。所以,無論是設計資料結構還是學習資料結構,都要弄清楚,
故事,有些講不下去了,感覺還是理解的不夠,就到這裡吧。今後又了新的感受,再補充。
理解資料結構 資料結構緒論總結
由於關於資料結構的概念和知識點過於繁亂,所以我今天就將其理了理,然後概括了一下本章我認為較重要的一些。我們都知道計算機主要用於數值計算,而我們的資料結構主要研究非數值計算問題 大多為生活中遇到的問題 上圖就是它們的基本關係,關於其基本概念什麼的,在這裡就不多說了。其中儲存結構又叫做物理結構,其中的順...
了解資料結構
程式 資料結構 演算法 資料 描述客觀事物的符號,是計算機中可以操作的物件,能被計算機識別,並輸入給計算機處理的符號集合 資料元素 是組成資料的 有一定意義的基本單位,在計算機中通常作為整體處理,也被稱為記錄 資料項 乙個資料元素可以由若干個資料項組成。資料項是資料不可分割的最小單位 關心資料之間的...
快速理解資料結構之快速排序
前段時間一直在學習資料結構,在看快排時會有點小困難,不知有沒有小夥伴跟我一樣笨呢!不過幸好檢視完在各大資料後理解了!接下來講下快速理解的方法,希望對初學懵懂者有用!4 2 3 1 6 7 10 8 1.最先開始要找乙個為基準,這個基準是最後才放進去的,是先儲存到乙個指標裡面,一般是找第乙個數為基準,...