为什么这个排序函数不适用于Python
请告诉我为什么Python的排序函数不起作用:为什么这个排序函数不适用于Python,python,sorting,Python,Sorting,请告诉我为什么Python的排序函数不起作用: def sort(list): if len(list)==0: return list elif len(list)==1: return list else: for b in range(1,len(list)): if list[b-1]>list[b]: print (list[b-1])
def sort(list):
if len(list)==0:
return list
elif len(list)==1:
return list
else:
for b in range(1,len(list)):
if list[b-1]>list[b]:
print (list[b-1])
hold = list[b-1]
list[b-1]=list[b]
list[b] = hold
a = [1,2,13,131,1,3,4]
print (sort(a))
看起来您正在尝试实现邻居排序算法。你需要重复N次循环。由于只在数组中循环一次,因此最终最大的元素位于其位置,即在最后一个索引中,但其余元素未排序 您可以自己调试算法,使用
或者,您可以使用python。如果它能工作,它将是世界上最好的排序算法。您的算法只将最大的元素放在列表的末尾。您必须递归地将函数应用于列表[:-1]。
您不应该使用python保留字让我们看看您的代码。Sort是一个内置的Python函数,至少我相信它对2.7和3.X都是一样的,所以当你创建自己的函数时,尽量不要使用内置函数来命名该函数,除非你要重写它们,这是一个完全不同的主题。这个想法也适用于您使用的参数。list是python语言中的一种类型,您将无法使用该变量名。现在,在更改所有变量等之后,对代码进行一些工作 当你在使用你的功能时,你只需要交换两个选定的元素,在需要时它们彼此相邻。这不适用于所有列表组合。您必须能够检查您所在的当前i是否位于正确的位置。因此,如果结束元素是列表中最低的元素,那么必须将其一直交换到列表的前面。排序有很多种方式,例如快速排序、合并排序、冒泡排序,但这不是最好的方式…:以下是一些帮助:
def sortThis(L):
if (len(L) == 0 or len(L) == 1):
return list
else:
for i in range(len(L)):
value = L[i]
j = i - 1
while (j >= 0) and (L[j] > value):
L[j+1] = L[j]
j -= 1
L[j+1] = value
a = [1,2,13,131,1,3,4]
sortThis(a)
print a
请看下面的内容,了解更多排序乐趣:Python版本?为什么要编写自己的函数?请详细说明它不起作用。根本不排序?排序不正确吗?崩溃?请解释您试图实现的逻辑。您应该对任何线性时间运行的类型都非常怀疑。如果您认为答案已经回答了您的问题,请标记正确的答案。