一、插入排序算法:
# coding:utf-8
def insertSort(listx):
length = len(listx)
for j in range(1, length):
#Means01:(方法一)
# for i in range(j,0,-1):
# if listx[i] < listx[i-1]:
# listx[i],listx[i-1] = listx[i-1],listx[i]
# else:
# break #此处的break可以减少多余的循环。
#Means02:(方法二)
i = j
while i > 0:
if listx[i] < listx[i-1]:
listx[i],listx[i-1] = listx[i-1],listx[i]
i -= 1
else:
break #此处的break可以减少多余的循环。
#功能测试:
if __name__ == "__main__":
list = [99, 212, 43, 98, 29, 48, 37, 111, 1, -15, 234, 143, -13994]
print(list)
insertSort(list)
print(list)
二、Shell排序算法:
# coding:utf-8
def shellSort(listx):
length = len(listx)
step = length // 2
while step >= 1:
#以下为步长为step的插入排序:
for j in range(step, length):
#Means01:(方法一)
for i in range(j,0,-step):
if listx[i] < listx[i-step]:
listx[i],listx[i-step] = listx[i-step],listx[i]
else:
break #此处的break可以减少多余的循环。
#Means02:(方法二)
# i = j
# while i > 0:
# if listx[i] < listx[i-step]:
# listx[i],listx[i-step] = listx[i-step],listx[i]
# i -= step
# else:
# break #此处的break可以减少多余的循环。
#步长逐步缩短,最终缩短至1:
step //= 2
#功能测试:
if __name__ == "__main__":
list = [99, 212, 43, 98, 29, 48, 37, 111, 1, -15, 234, 143, -13994]
print(list)
shellSort(list)
print(list)
注意:测试过程中,若出现IndentationError: unexpected indent异常,则可能是由注释方法所致。如果上述两种方法中的一种用三个引号(’’'或""")方式注释,或可见此缩进异常。