【问题标题】:The usage of radix sort基数排序的使用
【发布时间】:2018-03-16 09:09:00
【问题描述】:

假设我有一个文件,其中包含用户和他们最喜欢的电影的数据。

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 将如何帮助我实现这一目标,因为我整天都在思考。我对基数排序了解不多,但我知道它会逐个比较元素,但是在诸如神奇四侠在 Ace 的数据中排在第一位,在 Jack 的数据中排在第二位的情况下,我感到非常困惑。

谁能解释一些我可以理解以实现输出的算法?

【问题讨论】:

    标签: python radix-sort


    【解决方案1】:

    您能告诉我们您是如何对列表进行排序的吗?下面的快速而肮脏的代码为我提供了排序 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)
    

    【讨论】:

      猜你喜欢
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2012-11-02
      相关资源
      最近更新 更多