Insertion Sort和Merge Sort的效率问题
2016-05-01 本文已影响232人
KenZhangCn
排序的方法有很多种,今天来写一下Insertion Sort和Merge Sort的效率问题。
要讨论两种排序法的效率问题,首先我们得先假定有一部计算机,这台计算机做一些基本操作(+ - * / % & | ! ...)的时间是固定的。为了比较两者的效率我们还必须再假定排序时间最长。
-
n个数的插入排序的总时间即是把每一个数排序的时间加起来,而每一个数都和前面的数进行对比。
T(n) = C1∑tj = C1 * (1+2+3+ ... + n-1) ≈ C1n2/2
T(n) : n个数进行插入排序的总时间
∑tj :第j个数进行排序的总时间 -
n个数的归并排序中每一层的对比次数是n,一共有log2n层。
T(n) = C2nlog2n
T(n) : n个数进行归并排序的总时间
由上可知,在大量数据的情况下,归并排序的效率会优于插入排序。
由于笔者知识有限,如有错误,欢迎指出。