LenleDaytoy

常见排序算法-希尔排序、插入排序

希尔排序

   先将整个待排序列根据不同增量间隔依次分割成为若干子序列,分别进行直接插入排序。待整个序列中的记录基本有序时,再对全体记录进行一次直接插入排序。

 

 1 def shellSort(arr):
 2     step=len(arr)//2
 3     while step>0:
 4         for i in range(step,len(arr)):
 5             temp=arr[i]
 6             j = i-step
 7             while j>=0:
 8                 if temp<arr[j]:
 9                     arr[j+step]=arr[j]
10                 else:
11                     break
12                 j-=step
13             arr[j+step]=temp
14         step//=2
********************************************
#下面这种写法与插入排序一致
def shellSort3(arr):
step=len(arr)//2
while step >0:
for i in range(step,len(arr)):
j=i-step
temp=arr[i]
while j>=0 and temp<arr[j]:
arr[j + step] = arr[j]
j-=step
arr[j+step]=temp
step//=2

插入排序

插入排序是通过构建有序序列,将第一个元素自成一个有序序列,而对于剩下未排序的元素通过比较找到合适的位置插入元素来达到排序的目的。

def insertSort(arr):
    for i in range(1,len(arr)):
        j=i-1
        temp=arr[i]
        while j>=0 and  temp<arr[j]:
            arr[j+1]=arr[j]
            j-=1
        arr[j+1]=temp

  

 

 

  

posted on 2020-04-16 16:35  LenleDaytoy  阅读(116)  评论(0编辑  收藏  举报

导航