标签:
# -*- coding: utf-8 -*- def shell(arr): # 递归跳跃,等同插入移位 def step_insert(_arr, i, h): if i < h or _arr[i] >= _arr[i-h]: return else: _arr[i], _arr[i-h] = _arr[i-h], _arr[i] step_insert(_arr, i-h, h) # 步长 def step_list(_arr): _list = [] h = 1 while h < len(_arr) / 3: _list.append(h) h = 3 * h + 1 return _list[::-1] for h in step_list(arr): for i in range(h, len(arr)): step_insert(arr, i, h)
import random
arr = [random.randint(0, 100) for i in range(20)]
print arr
shell(arr)
print arr
标签:
原文地址:http://www.cnblogs.com/xiaosha/p/5191421.html