假设我有一个包含用户及其喜爱电影数据的文件。
Ace: FANTASTIC FOUR, IRONMAN
Jane: EXOTIC WILDLIFE, TRANSFORMERS, NARNIA
Jack: IRONMAN, FANTASTIC FOUR
并且基于此,我即将编写的程序将返回喜欢相同电影的用户的名称。
由于Ace和Jack喜欢同一部电影,他们将成为合作伙伴,因此节目会输出:
Movies: FANTASTIC FOUR, IRONMAN
Partners: Ace, Jack
Jane将获得豁免,因为她没有任何与她有相同兴趣的人。
我现在遇到的问题是弄清楚Radix Sort如何帮助我实现这一目标,因为我一直在思考这一天。我对基数排序知之甚少,但我知道它逐个比较元素,但是我非常困惑,例如FANTASTIC FOUR首先安排在Ace的数据中,第二个安排在Jack的数据中。
有人会解释一些我能理解的算法来实现输出吗?
答案 0 :(得分:0)
您能告诉我们您如何对列表进行排序吗?下面的快速和脏代码为排序的Ace和Jack提供了相同的输出。
Ace = ["FANTASTIC FOUR", "IRONMAN"]
Jane = ["EXOTIC WILDLIFE", "TRANSFORMERS", "NARNIA"]
Jack = ["IRONMAN", "FANTASTIC FOUR"]
sorted_Ace = sorted(Ace)
print (sorted_Ace)
sorted_Jack = sorted(Jack)
print (sorted_Jack)
您可以从这里开始逐个比较元素。
我为您提供了一个快速的解决方案,它可以向您展示如何继续进行,因为它根本没有优化而且没有一般化。
Ace = ["FANTASTIC FOUR", "IRONMAN"]
Jane = ["EXOTIC WILDLIFE", "TRANSFORMERS", "NARNIA"]
Jack = ["IRONMAN", "FANTASTIC FOUR"]
Movies = []
Partners = []
sorted_Ace = sorted(Ace)
sorted_Jane = sorted(Jane)
sorted_Jack = sorted(Jack)
for i in range(len(sorted_Ace)):
if sorted_Ace[i] == sorted_Jack[i]:
Movies.append(sorted_Ace[i])
if len(Movies) == len(sorted_Ace):
Partners.append("Ace")
Partners.append("Jack")
print(Movies)
print(Partners)