排序算法之插入排序

原理:

将列表假设分成两部分,第一部分为列表的第一个元素(有序序列),剩下的元素(无序序列)
将无序序列的元素逐一插入到有序序列的合适位置.

49

38

65

97

27

第一遍:

第二遍:

代码实现:

核心代码:
     有序序列只有一个元素,无序序列元素个数为n-1
      i = 1 表示列表下标,还表示有序序列中元素的个数

  while i >= 1:
        if alist[i] < alist[i-1]: # 无序序列的第一个元素比有序列最后一个元素小
            alist[i],alist[i-1] = alist[i-1],alist[i] # 无序序列第一个元素放在有序列左侧,即互换
            i -= 1 # 有序序列有多个元素需要多次对比
        else: # 比有序序列的元素大则停止
        break

完整代码实现

  def sort(alist):
        for i in range(1,len(alist)):
            while i >= 1:
                if alist[i] < alist[i-1]:
                    alist[i],alist[i-1] = alist[i-1],alist[i]
                    i -= 1
                else:
                    break
    return alist 

 

上一篇:排序算法之选择排序

下一篇:排序算法之希尔排序