Python:带队列的选择排序算法

Python: selectionsort algorithm with queues

我在 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. 创建一个队列(或列表)来存储答案。
  2. 找到旧数据列表中的最小元素。 *
  3. 从旧列表中删除该元素。 **
  4. 将 than 元素添加到答案列表中。
  5. 从步骤 2 开始重复(如果数据列表不为空)。

每一回合数据列表会越来越短, 并且元素将按升序添加到答案列表中。

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

现在,一旦您遍历了整个数据列表,您的变量 x 将包含列表中最小元素的值。

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