閱讀814 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《數據結構與抽象:Java語言描述(原書第4版)》一2.1.1 類比

本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第2章 ,第2.1.1節,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學  新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.1.1 類比

假定教室(稱為教室A)在固定位置上有40把椅子。如果一門課程限製為30位學生,則有10把椅子空閑且浪費。如果我們提高選課限製,則哪怕還有另外20位學生想上這門課,也僅能多容納10位學生。
數組就像這間教室,每把椅子像是一個數組位置。假定我們把教室內的40把椅子從0開始順序編號,如圖2-1所示。雖然在一間典型的教室內椅子按行放置,不過我們忽略這個細節,將椅子看作一維數組。
增加一位新學生。假定老師要求到達的學生按順序坐到已編號的椅子上。這樣,第一位到達教室的學生坐在0號椅子上,第二位學生坐在1號椅子上,以此類推。老師提出的按照順序編號坐在椅子上的要求是隨意給出的,這隻是他的習慣而已。你會看到,我們將以類似的方式填充包的數組。
假定房間A中的30位學生坐在從0~29之間的連續編號的椅子上,且有新學生想加入這些學生中。因為房間內有40把椅子,所以可占用編號30的椅子。可以簡單地把新學生分配到編號30的椅子。當所有40把椅子都占滿時,教室內不能再容納更多的學生了。教室滿了。

image


刪除某位學生。現在假定教室A中5號椅子上的學生要逃課。5號椅子在房間內固定的位置上,所以會空出來。但如果我們仍想讓學生們坐在連續編號的椅子上,則需要一位學生移到5號椅子。因為學生沒有特定的次序,所以如果位於最高編號椅子的學生移到5號椅子,則其他人就不需要再移動了。例如,如果房間內30位學生坐在0~29號椅子,則29號椅子的學生應該移到5號椅子。29號椅子將空出來。

自測題1 上麵描述的為讓空閑的椅子不再空閑而移動學生的方式有什麼優點?
自測題2 讓空閑下來的椅子空著有什麼優點?
自測題3 如果學生想逃課,哪個學生逃課不會迫使其他的人換椅子?

最後更新:2017-06-26 16:33:25

  上一篇:go  安裝PHP的memcache擴展
  下一篇:go  ???????????????????????????Java????????????????????????4????????????2.1????????????????????????????????????ADT???-??????-??????