为什么 python 中的这个选择排序程序不能正常工作?
Why doesn't this selection-sort program in python work correctly?
我写了一个不起作用的选择排序实现。我不明白为什么。
#!/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
放在这个程序的开头吗?
使用您的代码,在每隔一次迭代后,结果如下,
[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基本上是从start到end生成-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的使用,评论分享的wikilink很好理解。 This 会给出相同的清晰见解!
希望对您有所帮助!
我写了一个不起作用的选择排序实现。我不明白为什么。
#!/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
放在这个程序的开头吗?
使用您的代码,在每隔一次迭代后,结果如下,
[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基本上是从start到end生成-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的使用,评论分享的wikilink很好理解。 This 会给出相同的清晰见解!
希望对您有所帮助!