希尔排序也是一种插入排序,是简单插入排序经过改进之后一种更为高效的排序方法,也称为缩小增量排序。该算法是冲破O(n的平方n^2)的第一批算法之一。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。
def shellSort(nums):
# 设定步长
step = int(len(nums)/2)
while step > 0:
for i in range(step, len(nums)):#实现每个小分组进行了插入排序
# 类似插入排序, 当前值与指定步长之前的值比较, 符合条件则交换位置
while i >= step and nums[i-step] > nums[i]:
nums[i], nums[i-step] = nums[i-step], nums[i]
i -= step
step = int(step/2)
return nums
if __name__ == '__main__':
nums = [9,8,7,6,5,4,3,2,1,0]
print (shellSort(nums))
247

被折叠的 条评论
为什么被折叠?



