代码之家  ›  专栏  ›  技术社区  ›  Csilla Pesti

Python:带队列的selectionsort算法

  •  1
  • Csilla Pesti  · 技术社区  · 7 年前

    我遇到了一个Python练习:

    1. 读入一些字符串并将其放入队列中
    2. 按字典顺序将字符串排序到新队列中,但不应更改原始队列。我应该从头开始编写函数(例如,排序后的函数无法使用)
    3. 不允许使用数组

    我想我已经为步骤1找到了一个函数,但我为步骤2挣扎了几个小时。我真的很感激任何帮助!

    以下是我的第1步代码片段:

    q1 = []
    
    def DisplayQueue(queue):
        for Item in queue:
            print(Item)
    
    def PushQueue(queue):
        x = True
        while x:
            user_input = input("Please enter a string (for exit type: exit): ")
            if user_input == "exit":
                x = False
            else:
               queue.append(user_input)
        return queue
    
    queue = PushQueue(q1)
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   larsr    7 年前

    排序有很多种方式(冒泡排序、插入排序、快速排序基数排序),但我建议您从简单的开始,尽管不是最快的。

    1. 创建队列(或列表)以存储答案。
    2. 在旧数据列表中查找最小的元素*
    3. 从旧列表中删除该元素**
    4. 将than元素添加到答案列表中。
    5. 重复步骤2(如果数据列表不为空)。

    每转一圈,数据列表就会越来越短, 元素将按递增顺序添加到答案列表中。

    *)要在数据列表中找到最小的元素(可以将其放在单独的函数中),请将当前最小值的值保存在一个名为x或其他的变量中,然后逐个检查数据项。如果数据项小于变量x中的值,则将该数据项的值放入x中。

    现在,在浏览完整个数据列表后,变量x将包含列表中最小元素的值。

    **)可以使用从列表x中删除值v x.remove(v) . 它只删除该值的第一次出现。