为什么python中的selectionsort程序不能正常工作?

2024-09-26 18:14:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个无法工作的选择排序实现。我不明白为什么。你知道吗

#!/usr/bin
def sel_sort(list):
    for i in xrange(n-2):
        imin=i
        for j in xrange(i+1,n-1):
            if list[j]<list[imin]:
                imin=j
        list[imin],list[i]=list[i],list[imin]

n=int(raw_input("Enter number of elements : "))
x=[]
for t in xrange(n):
    x.append(int(raw_input()))

sel_sort(x)

for k in xrange(n):
    print x[k],

还有谁能解释一下我为什么要把#!/usr/bin放在这个程序的开头吗?你知道吗


Tags: inforinputrawifbin排序usr
1条回答
网友
1楼 · 发布于 2024-09-26 18:14:52

对于您的代码,在每一次迭代之后,结果如下:

[0, 3, 77, 25, 87, 22, 12, 7, 2, 43]
[0, 2, 77, 25, 87, 22, 12, 7, 3, 43]
[0, 2, 3, 25, 87, 22, 12, 7, 77, 43]
[0, 2, 3, 7, 87, 22, 12, 25, 77, 43]
[0, 2, 3, 7, 12, 22, 87, 25, 77, 43]
[0, 2, 3, 7, 12, 22, 87, 25, 77, 43]
[0, 2, 3, 7, 12, 22, 25, 87, 77, 43]
[0, 2, 3, 7, 12, 22, 25, 77, 87, 43]
[0, 2, 3, 7, 12, 22, 25, 77, 87, 43]
0 2 3 7 12 22 25 77 87 43

正如您可以清楚地看到的,它忽略了最后一个元素!你知道吗

xrange基本上从开始到结束生成-1(xrange(start,end))!你知道吗

内环的范围应为i+1到n,而不是n-1

def sel_sort(list):
    for i in xrange(n-2):
        imin=i
        #here range is i+1 to n
        for j in xrange(i+1,n):
            if list[j]<list[imin]:
                imin=j
        list[imin],list[i]=list[i],list[imin]
        print list

例如

输入:

x=[7, 3, 77, 25, 87, 22, 12, 0, 2, 43]

输出:

0 2 3 7 12 22 25 43 77 87

使用#!/本程序开头的usr/bin可以通过在评论中共享的wiki链接很好地理解。This会给出一个清晰的洞察!你知道吗

希望有帮助!你知道吗

相关问题 更多 >

    热门问题