本篇文章主要來介紹什么是資料結構,
首先讓我們來看一張圖片:

資料存盤于計算機的記憶體中,記憶體如上圖所示,形似排成 1 列的箱子,1 個箱子里存盤 1 個資料,
資料存盤于記憶體時,決定了資料順序和位置關系的便是資料結構,
其實在我們生活中用到很多資料結構的知識,那么舉一個我們生活中的栗子:
首先舉一個從上往下順序添加舉個簡單的例子,假設我們有1個電話簿——雖說現在很多人都把電話號碼存在手機里,但是這里我們考慮使用紙質電話簿的情況——每當我們得到了新的電話號碼,就按從上往下的順序把它們記在電話簿上,

假設此時我們想給張飛打電話,但是因為資料都是按獲取順序排列的,所以我們并不知道張飛的號碼具體在哪里,只能從頭一個個往下找(雖說也可以從后往前找或者隨機查找,但是效率并不會比從上往下找高),如果電話簿上號碼不多的話很快就能找到,但如果存了500個號碼,找起來就不那么容易了,
再比如我們可以按姓名的拼音順序對電話簿進行排列,接下來,試試以聯系人姓名的拼音順序排列吧,因為資料都是以字典順序排列的,所以它們是有結構的,

使用這種方式給聯系人排序的話,想要找到目標人物就輕松多了,通過姓名的拼音首字母就能推測出該資料的大致位置,
那么,如何往這個按拼音順序排列的電話簿里添加資料呢?假設我們認識了新朋友柯南并拿到了他的電話號碼,打算把號碼記到電話簿中,由于資料按姓名的拼音順序排列,所以柯南必須寫在韓宏宇和李希之間,但是上面的這張表里已經沒有空位可供填寫,所以需要把李希及其以下的資料往下移1行,
此時我們需要從下往上執行將本行的內容寫進下一行,然后清除本行內容的操作,如果一共有500個資料,一次操作需要10秒,那么1個小時也完成不了這項作業,
總的來說,資料按獲取順序排列的話,雖然添加資料非常簡單,只需要把資料加在最后就可以了,但是在查詢時較為麻煩;以拼音順序來排列的話,雖然在查詢上較為簡單,但是添加資料時又會比較麻煩,
雖說這兩種方法各有各的優缺點,但具體選擇哪種還是要取決于這個電話簿的用法,如果電話簿做好之后就不再添加新號碼,那么選擇后者更為合適;如果需要經常添加新號碼,但不怎么需要再查詢,就應該選擇前者,
我們還可以考慮一種新的排列方法,將二者的優點結合起來,那就是分別使用不同的表存盤不同的拼音首字母,比如表L、表M、表N等,然后將同一張表中的資料按獲取順序進行排列,



這樣一來,在添加新資料時,直接將資料加入到相應表中的末尾就可以了,而查詢資料時,也只需要到其對應的表中去查找即可,
因為各個表中存盤的資料依舊是沒有規律的,所以查詢時仍需從表頭開始找起,但比查詢整個電話簿來說還是要輕松多了,
資料結構方面的思路也和制作電話簿時的一樣,將資料存盤于記憶體時,根據使用目的選擇合適的資料結構,可以提高記憶體的利用率,
到這里,我相信你對資料結構有了一定的了解,下一篇我們將對資料結構中最常用的-鏈表進行講解,
參考
《我的第一本演算法書》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/91936.html
標籤:其他
上一篇:什么是鏈表?
