簡體   English   中英

對鏈接列表進行排序的目的是什么?

[英]What is the purpose of sorting a linked list?

我想知道對鏈表進行排序的目的是什么。 因為如果需要在未排序的鏈表和已排序的鏈表中查找元素,則必須執行O(n)。 如果我的問題很愚蠢,請原諒

排序的目的並不總是在對數時間進行搜索。 顯然,分類數據還有許多其他應用。

假設您必須從大型鏈表中刪除重復項(刪除重復元素),並且由於列表很大,因此沒有足夠的空間將列表項加載到哈希表中。 在這種情況下,您可以對列表進行排序,並刪除連續的元素(如果它們相同),從而刪除列表中的重復數據。

如果要將元素插入已排序容器中的適當位置,則已排序鏈表非常方便,這將保證線性時間和恆定的空間復雜性。 但是對於數組,您需要使用一個臨時數組,然后逐個移動所有元素。 Infact LRU高速緩存是引擎蓋下的雙向鏈接列表,並根據最近的命中項進行排序。 將新使用的項目和最近再次被訪問的舊項目插入到前面,以使已排序的列表保持排序。 如果在這里使用類似數組的結構,則LRU緩存不能提供恆定的復雜性

這只是一些經典的應用程序。 您可以找到許多其他應用程序。

讓我們考慮使用鏈表來實現優先級隊列。 我們可以隨機添加具有不同優先級的元素,但是我們想根據優先級處理隊列中的元素,這將有助於維護排序后的鏈表,從而使最高優先級項出現在開頭,並將其從列表中刪除。隊列是一個簡單的操作。 這並不完全是對列表進行排序,而是在插入項目時將其根據優先級放置在正確的位置。 這類似於數組的插入排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM