[英]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.