Python 无内置函数的插入排序
我试图用python创建一个插入排序程序,没有内置函数。唯一的问题是我的程序只会对列表中的第一项进行排序。我做错了什么 我这一类Python 无内置函数的插入排序,python,function,sorting,insertion,Python,Function,Sorting,Insertion,我试图用python创建一个插入排序程序,没有内置函数。唯一的问题是我的程序只会对列表中的第一项进行排序。我做错了什么 我这一类 def insertionsort(list1): for index in range(len(list1)): value = list1[index] position = index while position > 0 and list1[position
def insertionsort(list1):
for index in range(len(list1)):
value = list1[index]
position = index
while position > 0 and list1[position-1] > value:
list1[position]=list1[position-1]
position = position-1
list1[position] = value
return(list1)
示例输出
列表=[3,1,5,2]
输出=[1,3,5,2]修复缩进,如下所示:
(回路应在回路外)
事实上,你可以在任何地方找到:
试试这段代码:
def insertionSort(alist):
for index in range(1,len(alist)):
currentvalue = alist[index]
position = index
while position>0 and alist[position-1]>currentvalue:
alist[position]=alist[position-1]
position = position-1
alist[position]=currentvalue
alist = [3,1,5,2]
insertionSort(alist)
print(alist)
我希望它能有所帮助。首先,在插入排序中,我们假设第一个元素已排序。 因此,我们从第一个元素开始在列表中迭代。 其次 你在这里使用的是范围函数。 范围(4)包括从0-3开始的数字,不包括4。 因此,您的代码需要更正的是,您需要以以下方式使用范围函数: 用于范围(1,len(list1))中的索引,而不是范围(len(list1))中的索引 并更正return语句的缩进。只有当for循环完成其任务时,才会出现return语句,因为一旦遇到return,函数代码执行就会停止。 排序函数总结如下
def insertionsort(list1):
for index in range(1,len(list1)):
value = list1[index]
position = index
while position > 0 and list1[position-1] > value:
list1[position]=list1[position-1]
position = position-1
list1[position] = value
return(list1)
另一个建议是在请求帮助之前试着运行一下你的代码。这样可以避免一些你可以自己解决的小问题,为自己创造一个更好的概念
干杯 插入排序示例几乎可以在任何Python教科书中找到(例如,在Liang中)。问这样的问题真是太遗憾了。如果我没记错的话,这个问题不是一个小时前问的……另外,你可以删除
返回值,因为这是就地排序。对。但是,它将与链接中的内容完全相同(除了var名称)…这一点并不丢脸;)你引用了消息来源。
def insertionsort(list1):
for index in range(1,len(list1)):
value = list1[index]
position = index
while position > 0 and list1[position-1] > value:
list1[position]=list1[position-1]
position = position-1
list1[position] = value
return(list1)