2012-12-06 52 views
0

在一次採訪中,我被要求以這樣一種方式爲鏈接列表編寫插入函數,插入後,朝向插入元素頭部的元素應該更大,尾部與插入元素相比應該更小。鏈接列表中高效的「插入」功能

我實現了我的代碼如下步驟:

  1. 最初以降序排列的鏈表。
  2. 獲取元素。
  3. 以這種方式插入元素,即使插入後鏈接列表也會以降序排列。

但我被告知我的方式效率不高。

請讓我知道是否有有效的方法來實現相同。

+1

我*想*他們希望你假設鏈接已經被初始排序,並且你的插入應該保持這種類型。 (我會在面試中問這是否確實是意圖)。在這種情況下,不需要排序 - 只需迭代,直到找到插入位置並插入爲止。 – amit

+0

@amit:不,鏈接在開始時沒有排序。 –

+0

對我而言,@ amit的解釋是唯一有意義的解釋。我還要求面試官澄清。 – NPE

回答

1

排序是O(n log n)操作。如果你仔細閱讀這個問題,他們從不說清單應該排序,所以不要進行排序操作。你應該做的是從一個只有你的元素的新列表開始,然後對於原始列表中的每個元素,將它附加到前面(如果大於新元素)或否則在後面。

+0

是的。大多數你是對的..謝謝你.. :) –