簡體   English   中英

需要異常的排序算法

[英]Need unusual sorting algorithm

我有一個大約5000個整數范圍(例如30-50,45-100等)的列表,我需要將其放入“排序順序”。 此訂單需要基於哪些列表項是其他項的范圍子集。 例如,10-12將是2-14的范圍子集。 如果list(1).low_value> = list(2).low_value和list(1).upper_value <= list(2).upper_value則list(1)是list(2)的子集。 更復雜的是,一些列表項將是許多列表項的子集。

我最終需要創建一個有序列表,使得較低索引處的列表項始終是列表中跟隨它的任何項目的子集或不相關(例如,范圍1-2和3-4)。

謝謝,馬克

我的第一反應是它聽起來像拓撲排序 ,其中范圍被視為圖中的節點,並且邊緣被認為存在於范圍A到范圍B iff A是B的子范圍。

我假設你的意思是輸出列表的條件是如果A出現在B之前,那么B不是A的嚴格子集(但是如果A = B,A和B是不相交的,或者A和B重疊沒有一個則很好是另一個的子范圍)。

如果范圍B( B.upper_value - B.low_value )的寬度至少是范圍A的寬度,那么B不能是A的B.upper_value - B.low_value范圍。因此,通過增加范圍的寬度來對列表進行排序就足夠了。 這可以通過計算寬度然后進行基數排序以線性時間(假設固定大小的整數)來完成。

暫無
暫無

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

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