Python---插入排序

插入排序思想:假设要在一串无序的数据中进行从小到大排序,则第一个数不动,从第2个数开始起作为要插入的数,将要插入的数与前面所有数比较,找到插入位置。

代码:

'''插入排序思想:在一串无序的数据中,第一个数不动,将第2个数作为要插入的数(插入数要保存),
将第2个数与第1个数比较若小于则把第1个数放在第2个数的位置,第2个数插入到第一个数的位置中;
接着插入第3个位置的数,先将第3个数与第2个数比较,若小于则将第2个数放在第3个数的位置,
在将保存好的第3个数与第一个数比较,若小于将第一个数放在第2个数的位置,将要插入的第3个数放在第一个数位置,
若大于将要插入的第三个数放在第2个数位置即插入位置,以此类推'''
def insert_sort(list):
    for i in range(1,len(list)):
        insert_value_position=i  #插入数的位置
        insert_value=list[i]  #把要插入的数保存
        #下标大于0表示在0之后都是可以参与比较的数,只要插入值小于前面值,就将大值后移,找到插入位置。
        while  insert_value_position>0 and insert_value<list[insert_value_position-1]:
            list[insert_value_position]=list[insert_value_position-1]
            insert_value_position-=1
        list[insert_value_position]=insert_value


if __name__=='__main__':
    list=[]
    for i in range(15):
        list.append(random.randrange(1000))
    print(list)

    start_time=time.time()
    insert_sort(list)
    end_time=time.time()
    print(list)
    print("Cost time:",end_time,start_time)

代码中的思想写的比较凌乱,后续会进行修改。

时间复杂度:最大为o(n^2) 因为在while循环中不确定要比较的次数,最大次数就为每一个前面的数都需要进行比较。但是插入排序效率要高于冒泡和选择排序

猜你喜欢

转载自blog.csdn.net/beifangdefengchuilai/article/details/80917030
今日推荐