您的位置:首页 > 编程语言 > Python开发

Python 希尔排序

2015-07-29 17:22 627 查看
# -*- coding:utf-8-*-
'''
希尔排序
'''
def ShellSort(list):
# list = [4,1,9,13,34,26,10,7,4,3]
m = len(list) # 元素数目
gap = m/2     # gap = 5,2,1...
while gap > 0:  #
print gap
'''
列表中的list[i],按间隔gap从列表中取元素list[i+1],list[i+1+gap],list[i+1+2gap]...与list[i]比较
选择小的与list[i]交换
'''
for i in xrange(m):
index = i
j = i+1
while j < m:
if list[j] < list[index]:
index = j
j += gap
if index != j:  # 若有元素比list[i]小,交换
list[index],list[i] = list[i],list[index]
print list
gap = gap / 2
return list

if __name__== '__main__':
list_0 = [4,1,9,13,34,26,10,7,4,3]
list_1 = ShellSort(list_0)

算法性能:

1. 算法的平均时间复杂度是O(n**m),1<m<2,m=1.3,空间复杂度是O(1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 希尔排序