Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个排序函数不适用于Python_Python_Sorting - Fatal编程技术网

为什么这个排序函数不适用于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])

请告诉我为什么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])
                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版本?为什么要编写自己的函数?请详细说明它不起作用。根本不排序?排序不正确吗?崩溃?请解释您试图实现的逻辑。您应该对任何线性时间运行的类型都非常怀疑。如果您认为答案已经回答了您的问题,请标记正确的答案。