1. 插入排序:
插入排序默认第一个为已经排好顺序的列表,后面的每一个都与之比较并排序,排好之后,所有的自然都已经排好, 第二种优化的算法,如果已经插入, 说明找对了位置,那么下面就break,如果不需要排序, 那么就说明已经是最大的了, 因为前面的已经排好了,排好之后,也不需要再排了,可以break了。
import time start = lambda : time.time() list1 = [66,33,1,3,111,3,10,29,7,123,56,23] * 50 def busorted(unsorted): l = len(unsorted) for i in range(0,l): key = unsorted[i] for x in range(i,0,-1): if unsorted[x] < unsorted[x-1]: unsorted[x], unsorted[x-1] = unsorted[x-1], unsorted[x] return unsorted def optimizesorted(unsorted): l = len(unsorted) for i in range(0,l): key = unsorted[i] for x in range(i,0,-1): if unsorted[x] < unsorted[x-1]: unsorted[x], unsorted[x-1] = unsorted[x-1], unsorted[x] else : break return unsorted if __name__ == ‘__main__‘: print(list1) t1 = start() print(busorted(list1)) t2 = start() print(‘-----------Time is {}‘.format(t2-t1))
时间: 2024-10-20 09:56:26