减治法
插入排序
def insertionsort(a_list):
length = len(a_list)
for i in range(1, length):
tmp = a_list[i]
j = i - 1
while j>=0 and a_list[j]>tmp:
a_list[j+1] = a_list[j]
j = j - 1
a_list[j+1] = tmp
return a_list
if __name__ == '__main__':
array = [89,45,68,90,29,34,17]
ret_list = insertionsort(array)
print(ret_list)
对基本有序的数组输入,该算法有着非常好的性能。比如,在对数组快排时,当子数组的规模变得小于某个预定值时,可以停止快排的迭代,此时,整个数组已经基本有序,可以使用插入排序来完成接下来的工作,这样的改动,一般会减少10%的运行时间。
深度优先查找
广度优先查找
拓扑排序
生成排列
可以动手试一下,这个动起来还蛮有意思的。这个算法是生成排列最有效的算法之一。
假币问题