簡體   English   中英

左至右基數排序

[英]left to right radix sort

基數對從有效數字到最高有效數字的數字進行排序。 我有以下情況:

我的字母是英語字母,因此我的“數字”是英語字符串。 這些字符串的字符一次從左到右顯示。 也就是說,所有字符串的最高有效數字都首先顯示出來,依此類推。 在任何階段,我都會有一組k個字符長的字符串進行排序。 此時,每個字符串都顯示一個字符。 我想對新的字符串集進行排序。 我如何有效地做到這一點而無需從頭開始?

例如,如果我有以下排序集{for,for,sta,sto,sto}

並且在每個字符都被揭示之后,集合是{形式,前部,星號,停止,stoc}

新的排序集應為{fore,form,star,stoc,stop}

我希望添加每個新字符后的復雜度為O(n),其中n是集合的大小。

如果要在O(n)中執行此操作,則必須以某種方式跟蹤“組”:

for, for | sta | sto, sto

在此組中,您可以根據字符串的最后一個字符對字符串進行排序,以保持對集合的排序。

可以通過多種方式存儲組。 乍一看,我會建議您記住組開始/結束的偏移量。 但是,這會占用額外的內存。

另一種可能是將字符串存儲在某種前綴樹中 ,這很自然地對應於“一個又一個字符的添加”,但是我不知道這是否適合您的應用程序。

暫無
暫無

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

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