1. 算法原理及步骤
归并排序体现的是一种分治+合并的思想,我们知道,数组长度越小,排序越简单,而不管数组有多大,都是由小数组构成的,因此,要想对一个长度为N的数组进行排序,就可以将其进行分割,分割到大小为1的小数组,然后再将每个小数组进行排序再合并,最终合并为有序的原数组,如图所示:
由图可知,归并排序主要是将原数组拆分成长度为1的小数组中,然后再将这些小数组两两归并再排序,然后再将归并后的数组两两归并再排序.....最终归并为长度为n的数组再对其进行排序即可。那么问题来了:归并最终也要对n的数组排序呀,它的效率体现在哪里呢?
实际上,在每两个小数组归并的过程中,都是会对其归并结果进行排序的。最小的数组长度就是1,本身就是有序的,两个长度为1的数组再进行合并成长度为2的小数组并对其进行排序,然后再归并、再归并、....再归并为n的数组,可以发现,每次进行归并的两个小数组都是分别有序的&#