看到有很多人博客中写到归并算法,以及直接上代码,大致看了下,都差不多思路一样
这里我也谈谈归并算法的思想,代码就不上了,网上很多
首先,假如说有这样两个数列:a[4]={ 1 3 5 7 } 和b[4]={ 2 4 6 8 }
这两个数列都是排好序的,顺序也是一样的,那么问题就来了,能否创建一个数组c[8],
然后把这两个数组排序并放到C[8]里呢?
思考如下:
1、依次比较两个数组的元素,小的放前面,并使下标++
2、依次循环上一步骤
3、当循环退出后,肯定有一个数组的元素是没有被放到数组c里的,那就通过判断确定是哪个数组,并把数组的所有元 素依次放到数组c的后面
好了,这样就把数组c排好序了,依次从小到大
那么归并算法就是在上诉过程基础上做如下修改:
有一个数组a[],把这个数组拆分为两个等长数组,然后对两个数组用递归算法依次二分,然后把最小数组单元的元素进行比较,这样就保证得到了两个有序的数组,最后这两个数组就可以通过前面的那个理解进行重新排序了