python 实现排序算法

用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]

猜你喜欢

转载自www.cnblogs.com/carlos-mm/p/9212902.html