希尔排序

基本思想是:设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列,
# 所有距离为increment的元素放在同一个子序列中,在每一个子序列中分别实行直接插入排序。然后缩小间隔increment,
# 重复上述子序列划分和排序工作。直到最后取increment=1,将所有元素放在同一个子序列中排序为止。
# (2)由于开始时,increment的取值较大,每个子序列中的元素较少,排序速度较快,到排序后期increment取值逐渐变小,
# 子序列中元素个数逐渐增多,但由于前面工作的基础,大多数元素已经基本有序,所以排序速度仍然很快。
#首选增量为n/2,以此递推,每次增量为原先的1/2,直到增量为1
def GetShell(array):
lenths=len(array)
#num 即为分割的增量值
num=lenths/2
while num>0:
for i in range(num,lenths):
while i>=num and array[i-num]>array[i]:
array[i],array[i-num]=array[i-num],array[i]
i-=num
num=num/2
return array
a=[21,25,49,20,16,8]
print GetShell(a)

 

posted @ 2018-09-04 19:07  automation_test  阅读(108)  评论(0)    收藏  举报