2011-03-15 119 views
2

我有一些購物清單按訂單排序。現在,我想合併所有列表,並保留排序順序,以便在下次購物時按照「完美」順序排序。我怎麼做?如何根據以前的採購訂單對購物清單進行排序?

實施例:
名單A:牙膏,麪包,肉,蔬菜,牛奶,冰淇淋
列表B:光盤,麪包,水果,蔬菜,果汁,糖,巧克力
列表C:肉類,果汁,牛奶,白砂糖

會導致:
(牙膏,CDS),麪包,肉類,水果,蔬菜,果汁,牛奶,糖,(冰淇淋,巧克力)括號內
項目具有內未知的排序順序括號。

回答

2

您應該嘗試Topological sorting。這是當您在一組項目上定義了部分訂單(沒有周期)時使用的排序。從最初的列表中,您將構建一些部分訂單對,並在拓撲排序算法中使用這些對。

例如,你想從你最初的名單中提取以下信息:

  • 牙膏<麪包
  • 麪包<肉類
  • 肉類<蔬菜
  • 蔬菜<牛奶
  • 牛奶<冰面霜
  • 張光盤<麪包

如果你沒有得到一個週期(也叫做< B和B < A),你將能夠構建所有項目的「好」的排序。

+0

太棒了!非常感謝!現在,當你指向正確的方向時,我甚至找到了一些示例代碼。再次感謝。 – Tech 2011-03-15 12:30:12

+0

不客氣:) – 2011-03-15 15:08:02

+0

@nanne感謝您的編輯。 – 2011-03-15 15:08:32