对于分治算法的一个较为常规的应用中,归并排序是一个使用分治算法的排序方式。给定一个随机排序的数组,我们要将其元素按照升序或者降序的方式进行排序,可以设想到这样的一种算法,如果一个数组的上半部分和下半部分已经排好序,依靠这个条件来快速的将整个数组转换为排序好的形式。
假设当前有的两个是已经排序好的数组如图所示
添加图片注释,不超过 140 字(可选)
要将上图的已经排序好的数组合并成一个排序好的大数组,首先用两个指针指向数组的首元素,其次比较指针指向元素大小,将数值小的元素放入第三个数组 数值大的元素对应指针不变,然后将指向小元素的指针往后挪一位。该操作依次进行,如果某个子数组中的元素已经被挪动完毕了,那就可以将另一个数组剩下的元素直接插入新数组的末尾,对于上图中用两个指针分别指向元素3和9,由于3比9小,所以把元素3放入到新数组中,原来的指向元素3的指针向后移动一个元素指向27,而这个时候27是大于9的,就需要把9放入到新数组中 将原来指向9的指针向后移动一个元素指向10元素,这个过程不断的继续进行,最后就可以把两个已经排序好的数组归并成为一个排序好的数组。
而通过这我们也可以知道,对于一个没有排序好的数组,如果将其分解成为两个子数组,然后将两个子数组排序好,使用上面描述的归并方法将两个数组归并成为一个排好序的数组,就可以实现数组排序。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)