我有一些按照订单排序的购物清单。现在我想合并所有列表,保持排序顺序,从而产生一个按照“完美”选择顺序排序的列表,供我下次购物时使用。我该怎么做?
例:
清单A:牙膏,面包,肉类,蔬菜,牛奶,冰淇淋
清单B:CD,面包,水果,蔬菜,果汁,糖,巧克力
清单C:肉类,果汁,牛奶,糖
会导致:
(牙膏,CDs),面包,肉类,水果,蔬菜,榨汁,牛奶,糖,(冰淇淋,巧克力)
括号内的项目在括号内有未知的排序顺序。
答案 0 :(得分:2)
您应该尝试Topological sorting。当您在一组项目上定义了部分订单(无循环)时,将使用此排序。从初始列表中,您将构建一些偏序对,并在拓扑排序算法中使用这些对。
例如,您将从初始列表中提取以下信息:
如果你没有得到一个循环(又名A< B和B< A),你将能够构建所有项目的“良好”排序。