插入排序算法的运作如下
- 从前往后,先排序前两个元素
- 把第三个元素插入其中,然后让前三个已经排好序,再把第四个插入前三个中,排好序…以此类推,直到最后一个插入为止
# -*- coding:utf-8 -*-
# __author__ = 'jakey'
# 该算法复杂度为n^2
import time
def algorithm(args):
"""
插入排序
:return:
"""
if not args or not isinstance(args, list):
return []
if len(args) < 2:
return args
if args[0] > args[1]:
args[0], args[1] = args[1], args[0]
for i in range(2, len(args)):
if args[i] <= args[0]:
for j in range(i, 0, -1):
args[j], args[j-1] = args[j-1], args[j]
continue
elif args[i] >= args[i-1]:
continue
for m in range(i):
if args[m] <= args[i] <= args[m+1]:
for n in range(i, m+1, -1):
args[n], args[n-1] = args[n-1], args[n]
return args
if __name__ == "__main__":
un_order = [93, 1, 2, 3, 12, 34, 2, 5, 7, 8, 11, 0, 79]
begin_time = time.clock()
result = algorithm(un_order)
end_time = time.clock()
print result
# [0, 1, 2, 2, 3, 5, 7, 8, 11, 12, 34, 79, 93]
print end_time - begin_time
# 3e-05
博客来源: http://blog.csdn.net/juanjuel