用python实现插入排序
python实现插入排序 def insertionSort(alist): length = len(alist) for i in range(1,length): temNum = alist[i] c=0 for j in range(i,0,-1): if temNum < alist[j-1]: alist[j] = alist[j-1] c += 1 else: #当第一次发现前面的值比自己小时就该退出循环 if c == 0: break else: alist[i - c] = temNum break else: '''当程序运行到当j=0之后,会跳出循环时,将之前的temNum赋值给第一位 此处只会在某个值和第一位进行比较的时候才会进入,将这个值付给第一位 ''' alist[0]= temNum print("times", i, ":", alist) return alist if __name__ == "__main__": alist = [7,3,5,4,6,2] print("initList:",alist) insertionSort(alist)
虽然插入排序是o(n^2)的排序方法,但当给出的值排序的正确率越多,排序的次数就越少,当列表以从小到大的顺序给出的话,排序等于O(n)
结果:
initList: [7, 3, 5, 4, 6, 2] times 1 : [3, 7, 5, 4, 6, 2] times 2 : [3, 5, 7, 4, 6, 2] times 3 : [3, 4, 5, 7, 6, 2] times 4 : [3, 4, 5, 6, 7, 2] times 5 : [2, 3, 4, 5, 6, 7]