2008-11-09 23 views
-4

比較LinkedLists和陣列,同時也比較了他們對排序和不排序數據LinkedList與數組的排序與未排序數據的可行性?

  • 添加
  • 刪除
  • 檢索
  • 排序
  • 總體速度
  • 總體的內存使用情況
差異

實際問題

討論將未排序的數據集作爲鏈表而不是數組實現的可行性。在插入,移除,檢索,計算機內存和應用程序的速度方面會有什麼折衷?

討論將排序數據集作爲鏈表而不是數組實現的可行性。在插入,移除,檢索,計算機內存和應用程序的速度方面會有什麼折衷?

根據您對前面問題的回答,總結在應用程序中使用鏈接列表的成本和收益。

我的答案/輸入:

LinkedLists有添加很多節點時,分配內存每次一個新節點添加的,有用的,加入一些元素

數組時,大小不斷變化,但一般比較慢在程序運行開始時分配的內存,調整大小列表的速度緩慢(如果必須調整大小,則增加很多元素的速度)

由於索引造成的數組檢索速度更快

添加/刪除在LinkedList的更快,因爲指針

+0

您還沒有討論的排序無序對比的差異。該問題在一定程度上使得我肯定的回答 – 2008-11-09 18:40:11

+0

我真的不明白排序的無序與之間的區別,這將是重要的措辭。 我知道,如果數組進行排序可以使用二進制搜索的是O(LOGN)。這是我所知道的。 和平與感謝! – twodayslate 2008-11-09 18:46:03

回答

2

在未排序與排序。我會做一個,那麼你真的需要做你的功課

Stackoverflow標記確實需要表來做這個。你想說的是,對於未排序/數組,排序/數組,未排序/鏈接列表,已排序/鏈接列表,操作的「昂貴」是多麼的「昂貴」。

最後一點:「應用程序的速度」考慮的不僅僅是單個操作的速度。

* Adding 

未分類:數組添加是O(1),除非需要調整大小 - 只需將其添加到最後。你可能想討論一個縮減開銷的大小調整策略(提示:不要只增加一個大小)

排序:數組添加是O(n) - 找到添加它的地方是O(log( n)),但您需要向上移動一半元素(平均值)以製作新的元素

未分類:鏈接列表爲O(1) - 將其添加到列表的開始或結尾。

排序:鏈表爲O(n) - 雖然你可以再次添加的元素在O(1),則需要通過上平均水平的一半清單掃描發現把它的地方。

所以,在你的休息。發帖回答,我們會批評它,而是從你的(大概)貴educatiom最,你真的需要做一些工作,這個:)

* Removing 
* Retrieving 
* Sorting 
* Overall speed 
* Overall memory usage 
2

不知道這是什麼類,但對於一個CS程序,你必須做得比「慢」與「快」。嘗試根據所需的操作數量來量化。您應該熟悉通常用於這種量化的機器 - 使用機器。

0

@保羅:謝謝

  • 卸下

未排序&排序:數組移除是O(n) - 具有超過移動所有元素來填充 '洞'

未分類&排序:鏈表是O(1) - 更改指針需要