不带内置函数的插入排序

2024-06-11 07:05:30 发布

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

我试图用python创建一个没有内置函数的插入排序程序。唯一的问题是我的程序只对列表中的第一项进行排序。我做错什么了?在

我的同类

       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]


Tags: 函数in程序列表forindex排序value
3条回答

修复缩进,如下所示: (返回应该在循环之外)

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)


aList = [3, 1, 5, 2]

aList = insertionsort (aList)
print (aList)

事实上,你可以在任何地方找到:

https://interactivepython.org/runestone/static/pythonds/SortSearch/TheInsertionSort.html

首先,在插入排序中,我们假设我们的第一个元素是排序的。 因此,我们从第一个元素开始迭代列表。 其次, 你用的是量程函数。 范围(4)将包括从0到3开始的数字,并排除4。 因此,您的代码需要更正的是,您需要按以下方式使用范围函数: 对于范围(1,len(list1))中的索引,而不是范围(len(list1))中的索引 并更正报税表的缩进报表。返回语句只应在for循环完成其任务时出现,因为一旦遇到返回,函数代码执行将停止。 sort函数总结如下。在

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)

另一个建议是在请求之前尝试一下代码的试运行救命。它避免你自己能解决的小问题,为自己创造一个更好的概念。在

干杯。。!!在

试试这段代码:

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)

我希望有帮助。在

相关问题 更多 >