数据结构与算法(排序):直接插入排序

	插入排序的基本思想是:将数据元素集合分为两部分,一部分为有序区,一部分为无序区。

每次从无序区中取出一个数据元素,按其关键字大小将其插入到有序区的适当位置,知道全部数据都插入到有序区位置。
直接插入排序:现有数组L,L的长度为n,那么L[0]为有序区第一个元素,之后的n-1个元 素为需要插入的,也就是无序区的元素。
需要进行n-1趟插入(也就是无序区中的n-1个元素依次插入到有序区中)
第i趟时,有序区元素:L[0]-L[i-1];无序区元素L[i]-L[n-1]。
L[i]的值(key =L[i])和有序区元素依次比较,找到插入位置j。
有序区j及之后的元素后移(后移的时候需要注意,应该是有序区中最后一个元素开始后移,也就是从后往前的移),key插入到j位置。
#注意:有序区中元素挪动位置之后,array的值就变化了,所以要用key来存array[i]的值

import time
start = time.clock()
def quicksort(array):
    index = 0
    for i in range(1,len_a):
        key = array[i]
        for j in range(i-1,-1,-1):
            if  key < array[j]:
                array[j+1] = array[j]
                index = j
                array[j]=key
    return array
array = [2,4,1,3,6,5]
len_a = len(array)
print(quicksort(array))
elapsed = (time.clock()- start)
print("TIme used",elapsed
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值