Python 插入排序实现

Python 插入排序实现,python,sorting,Python,Sorting,我不知道为什么我的插入排序不起作用。它是用python编写的。当我尝试测试输入时,我得到[4] def insertion_sort(list): q =0 temp = [] #list to hold sorted values size = len(list) while(q < size): if not temp: #if empty add first element of list

我不知道为什么我的插入排序不起作用。它是用python编写的。当我尝试测试输入时,我得到[4]

  def insertion_sort(list):
        q =0
        temp = []  #list to hold sorted values
        size = len(list)
        while(q < size):
          if not temp: #if empty add first element of list
              temp.append(list[0])
          list = list[1:len(list)] #update list so it doesn't include first element
          for i in range(1,len(temp)):  #insertion step
              if(len(temp)==1):
                  if(list[0] > temp[0]): #if temp is size 1 insert element before/after
                      temp.append(list[0])
                  else:
                      temp.insert(0,list[0])

              else:
                  if(list[0] >= temp[i-1] and list[0] <= temp[i]): #insert value between two values
                      temp.insert(i,list1[0])
                  if(list[0] <= temp[0]):           # if less than min insert first
                      temp.insert(0,list1[0])
                  if(list[0] >= temp[len(temp)-1]): # if greater than max, insert last
                      temp.insert(len(temp),list[0])
          q=q+1
        return temp 

  list = [4,3,2,1] 
  print insertion_sort(list)
def插入排序(列表):
q=0
temp=[]#用于保存排序值的列表
大小=长度(列表)
而(qtemp[0]):#如果temp的大小为1,则在之前/之后插入元素
临时追加(列表[0])
其他:
临时插入(0,列表[0])
其他:

如果(list[0]>=temp[i-1]和list[0]不要自己实现。请使用
sorted()
内置:

>>> mylist = [4,5,6,7,8,9,1]
>>> sorted(mylist)
[1,4,5,6,7,8,9]

您是否需要创建一个新的插入排序代码,或者您只是对它为什么不起作用感兴趣? 以下是一个插入排序:


…这对于插入排序来说太复杂了。简化逻辑…另外,请不要使用
列表
作为变量名。它已经是一个内置名了。你想做什么?请不要问“此代码不起作用,有人能帮我吗?”查看新代码并发现其中的错误是非常困难的。如果您想寻求帮助,请描述您迄今为止尝试了什么,您认为问题可能在哪里,等等。对代码进行注释也会大大简化我们的帮助。此外,作为未来的参考,制作一个大型函数只会让您的生活更加困难。相反,将您的函数拆分为多个组件。如本例所示;不只是有一个名为insertion\u sort的函数,而是创建多个函数,例如,在\u temp中查找\u Miniminal\u number\u,并将\u Miniminal\u number\u附加到\u列表。OP可能出于某种原因(例如家庭作业)需要实现插入排序.但是,这是最好的一般建议。如果是家庭作业,那就应该投反对票,因为他在发帖时没有明确告诉我们这不是家庭作业,只是出于好奇。试图提高我的算法设计技能…看起来我不够好,不足以说这不容易,而且需要练习。我仍然想知道为什么我的答案是否定的那不行
def insertion_sort(list2):
for i in range(1, len(list2)):
    save = list2[i]
    j = i
    while j > 0 and list2[j - 1] > save:
        list2[j] = list2[j - 1]
        j -= 1
        list2[j] = save
return list2