插入排序的基本思想是:将数据元素集合分为两部分,一部分为有序区,一部分为无序区。
每次从无序区中取出一个数据元素,按其关键字大小将其插入到有序区的适当位置,知道全部数据都插入到有序区位置。
直接插入排序:现有数组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