这是一个比起前两个排速算法效率高的多的算法
首先看下该算法的原理
由于偶表达能力实在是....... 咱还是用图片来表达吧.

通过上面的这张图片应该不难看出,该算法是先将数组分成4对(array.length/2)然后对每一对进行合并,成为2个元素的排序序列,接着将每两个连续的2元素的序列合并成一个4元素的排序序列,依此类推.....
这里还用到了以前说到的合并有序列表的算法,不过要把上次的合并算法稍微改一下,改成合并一个数组中的2个有序子数组(详见下面的代码块)
欢迎指教:wink:
上次的选择排序,无论数组是如何排列的其算法的比较次数都是n(n-1)/2。
插入排序的方法是 从数组A[0]开始(先将数组中的首元素视为一个已经排序好的数组,因为是一个元素的数组,他自然是已经排序好的..)将A[1]插入到A[0]的前面或者后面,这取决于A[0]是否比A[1]大,接着继续这一过程 每次都是将A[i]插入到已经排序好的A[0....i-1]中合适的位置。
比较的过程为 依次扫描A[0....i-1],每次都将A[i]于当前位置的元素比较,如果当前位置的元素比A[i]大,那么就将当前元素的位置移动到一个更高序号的位置,如果当A[i]大于当前位置的元素或者全部扫描完毕 比较过程结束,将A[i]插入到合适的位置。
:shock:看下代码吧...
学编程也有段时间了,但是一直没有好好的去学习算法,只是一直追求语和法编程语言的功能等,现在感觉到,编程语言只是工具算法和思想才是核心。
最近在china-pub买了本算法的书,这次要好好学学了:mrgreen:

算法设计技巧与分析
现在说一下这本书介绍的第一个算法 二分搜索