【问题标题】:Python: selectionsort algorithm with queuesPython:带队列的选择排序算法
【发布时间】:2018-05-23 02:38:34
【问题描述】:

我遇到了一个 Python 练习:

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

我想我已经设法为第 1 步想出了一个功能,但我已经为第 2 步苦苦挣扎了好几个小时。我真的很感激任何帮助!

这是我第 1 步的代码 sn-p:

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)

【问题讨论】:

    标签: python string queue selection-sort


    【解决方案1】:

    可以通过多种方式进行排序(冒泡排序、插入排序、快速排序基数排序),但我建议您从简单的方式开始,虽然不是最快的方式。

    1. 创建一个队列(或列表)来存储答案。
    2. 在旧数据列表中查找最小元素。 *
    3. 从旧列表中删除该元素。 **
    4. 在答案列表中添加比元素。
    5. 从第 2 步开始重复(如果数据列表不为空)。

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

    *) 要在数据列表中找到最小的元素(你可以把它放在一个单独的函数中),将当前最小值的值保存在一个名为 x 之类的变量中,然后一个一个地遍历数据项.如果数据项小于变量 x 中的值,则将该数据项的值放入 x 中。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-11-01
      • 2019-04-24
      • 2021-12-29
      • 2019-03-31
      相关资源
      最近更新 更多