递归和分治
分治(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**)一定要注意哦!!!