这段代码是关于选择排序的,但是当我运行代码时它没有按预期工作

Posted

技术标签:

【中文标题】这段代码是关于选择排序的,但是当我运行代码时它没有按预期工作【英文标题】:This code is about Selection sorting but when i run the code it is not working as expected 【发布时间】:2022-01-19 11:27:42 【问题描述】:

该程序仅在否时有效。 of elements 为 2 如果超过 2 则不起作用。

#Selection Sort
L = []
n = int(input('Enter the number of elements\t:'))
for i in range(n):
    item = int(input('Enter item\t:'))
    L.append(item)
    print('List\t:')
    for i in range(n-1):
        for j in range ((i+1),n-1):
            if (L[j]<L[i]):
                (L[j],L[i]) = (L[i],L[j])
print(L)

output1 output2

【问题讨论】:

您多次使用i。第一次在for i in range(n): 和第二次for i in range(n-1): 哦,我应该怎么做顺便说一句,我是一个新程序员,这段代码写在我的书中。 我认为它实际上只是 for i in range(n-1) 的缩进...它应该没有缩进,以便在您输入所有项目后运行。您的错误原因是您在将 L 项输入控制台之前尝试访问它们。 【参考方案1】:
L = []
n = int(input('Enter the number of elements\t:'))
for i in range(n):
    item = int(input('Enter item\t:'))
    L.append(item)
    print('List\t:')
#First loop from 0 to n-1
for i in range(n-1):
    #second loop from 1 to n
    for j in range ((i+1),n):
        if (L[j]<L[i]):
            (L[j],L[i]) = (L[i],L[j])

print(L)

输入

Enter item      :5
List    :
Enter item      :2
List    :
Enter item      :3
List    :
Enter item      :1

输出

[1, 2, 3, 5]

【讨论】:

谢谢你先生.. 一个循环是多余的,更新代码【参考方案2】:

试试这个

enter code here
#Declare variable for selection sort
L = []
n = int(input('Enter the number of elements\t:'))
#iterate for add values
for i in range(n):
    item = int(input('Enter item\t:'))
    L.append(item)
    print('List\t:')
#iterate for select minimun value and swap value in the array    
for i in range(len(L)):
    # Find the minimum element in remaining 
    # unsorted array
    min_idx = i
    for j in range(i+1, len(L)):
        if L[min_idx] > L[j]:
            min_idx = j
              
    # Swap the found minimum element with 
    # the first element        
    L[i], L[min_idx] = L[min_idx], L[i]
print(L)

【讨论】:

谢谢.....【参考方案3】:

代码:

#Selection Sort
L = []
n = int(input('Enter the number of elements\t:'))
for i in range(n):
    item = int(input('Enter item\t:'))
    L.append(item)
print('List\t:')
for i in range(n-1):
    for j in range ((i+1),n):
        if (L[j]<L[i]):
            (L[j],L[i]) = (L[i],L[j])
print(L)

输出:

Here

【讨论】:

您好,本部分仅供解答。请直接在您的帖子中添加其他信息并删除此答案。

以上是关于这段代码是关于选择排序的,但是当我运行代码时它没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥选择排序算法的这段代码没有给出输出?

PySide 线程和 http 下载

为啥这段代码运行时没有任何输出(关于 pthread)?

Js选择排序的问题。我这段代码,为何实现不了。

我正在用 C 语言做一个简单的数据库管理项目。但是当我运行这段代码时,我得到了错误。

为啥这段代码没有收到我的广播?