Python:带队列的选择排序算法
Python: selectionsort algorithm with queues
我在 Python 遇到过一个练习:
- 读入一些字符串并将它们放入队列
- 按字典顺序将字符串排序到新队列中,但不应更改原始队列。我应该从头开始写一个函数(例如不能使用排序函数)
- 不允许使用数组
我想我已经设法为第 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)
可以通过多种方式进行排序(冒泡排序、插入排序、快速排序基数排序),但我建议您从简单的开始,尽管不是最快的。
- 创建一个队列(或列表)来存储答案。
- 找到旧数据列表中的最小元素。 *
- 从旧列表中删除该元素。 **
- 将 than 元素添加到答案列表中。
- 从步骤 2 开始重复(如果数据列表不为空)。
每一回合数据列表会越来越短,
并且元素将按升序添加到答案列表中。
*) 要找到数据列表中的最小元素(您可以将其放在单独的函数中),请将当前最小值的值保存在名为 x 或其他变量的变量中,然后遍历数据项 1一个。如果数据项小于变量 x 中的值,则将该数据项的值放入 x。
现在,一旦您遍历了整个数据列表,您的变量 x 将包含列表中最小元素的值。
**) 您可以使用 x.remove(v)
从列表 x 中删除值 v。它只是删除了该值的第一次出现。
我在 Python 遇到过一个练习:
- 读入一些字符串并将它们放入队列
- 按字典顺序将字符串排序到新队列中,但不应更改原始队列。我应该从头开始写一个函数(例如不能使用排序函数)
- 不允许使用数组
我想我已经设法为第 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)
可以通过多种方式进行排序(冒泡排序、插入排序、快速排序基数排序),但我建议您从简单的开始,尽管不是最快的。
- 创建一个队列(或列表)来存储答案。
- 找到旧数据列表中的最小元素。 *
- 从旧列表中删除该元素。 **
- 将 than 元素添加到答案列表中。
- 从步骤 2 开始重复(如果数据列表不为空)。
每一回合数据列表会越来越短, 并且元素将按升序添加到答案列表中。
*) 要找到数据列表中的最小元素(您可以将其放在单独的函数中),请将当前最小值的值保存在名为 x 或其他变量的变量中,然后遍历数据项 1一个。如果数据项小于变量 x 中的值,则将该数据项的值放入 x。
现在,一旦您遍历了整个数据列表,您的变量 x 将包含列表中最小元素的值。
**) 您可以使用 x.remove(v)
从列表 x 中删除值 v。它只是删除了该值的第一次出现。