读书人

递归跟分治

发布时间: 2012-09-18 16:21:42 作者: rapoo

递归和分治

分治(divide and conquer)是基于多分枝递归的一种算法。简单的说就是把一个大问题分解为多个类型相同的子问题,最后把这些子问题的解合并起来就是问题的解。

我们看一下典型的递归和分治算法。


问题1: 插入排序的递归算法

思路:

1.首先找到突破点->> 如果共有n个数,如果前面n-1个都已排序,那么我只要把最后一个数插入到正确的位置即可。那如何让前n-1个都已排序呢,如果前n-2个已排序就好了...........,一直到第一个已排序,明显的第一个肯定是已排序的,那么这就是停止条件。

2.当有了思路后,写递归函数时一定要确信自己的递归函数没错,不要想如果错了怎么办?,如sort(a,n-1),就是代表前n-1个数都已排序。

3.当合并数据时,直接考虑最后合并的情况。如当前n-1个数都是已排序的,那么就考虑如何将最后一个数插入到合适位置(如下merge函数)

于是自己写个小Matrix类,2维矩阵

输出:1 2 3 4 5 6 7 8 baobao lwy yhb yiluo 

我一直觉得c字符串挺复杂的。。。

亲,return strcmp(*(char**)s1,*(char**)s2); 这个是(char**)一定要注意哦!!!


读书人网 >编程

热点推荐