基数排序的用法

时间:2018-03-16 09:09:01

标签: python radix-sort

假设我有一个包含用户及其喜爱电影数据的文件。

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的数据中。

有人会解释一些我能理解的算法来实现输出吗?

1 个答案:

答案 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)