2016年3月11日

数据结构排序算法之堆排序

摘要: 关于堆排序的相关知识非常复杂,不懂得可以参考任意一本数据结构教程,本博客只对堆排序框架及代码进行讲解。堆排序分三个大的步骤:建初堆,堆调整,堆排序(其中最核心的是堆调整)1建初堆:从数组中的最后一个非叶子节点开始,从下而上倒推(重复调用堆调整函数)2堆调整:堆调整的前提是已建好了一个堆,但是因为输... 阅读全文

posted @ 2016-03-11 16:45 海南一哥 阅读(290) 评论(0) 推荐(0) 编辑

整数划分

摘要: 整数划分,是指把一个正整数n写成如下形式: n=m1+m2+...+mi; (其中mi为正整数,并且1 0),只有一种划分即{1}; (2) 当m=1时,不论n的值为多少,只有一种划分即n个1,{1,1,1,...,1}; (3) 当n=m时,根... 阅读全文

posted @ 2016-03-11 16:23 海南一哥 阅读(327) 评论(0) 推荐(0) 编辑

二叉树的递归与非递归

摘要: 要求:给定一个二叉树序列,要求以递归与非递归的形式先序输出。 递归的本质就是系统自动用系统工作栈来将参数入栈与出栈,所以递归化非递归就是程序员自己来控制参数的入栈与出栈,可用循环加自定义栈来控制。 代码如下: #include#includeusing namespace std;typedef... 阅读全文

posted @ 2016-03-11 16:06 海南一哥 阅读(162) 评论(0) 推荐(0) 编辑

螺旋数组

摘要: 要求:螺旋数组是指将给定的存储连续自然数的二维数组中的数字从最外层开始以顺时针形式输出 如:二维数组为 {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}} 则输出为: {{1,2,3,4}, {12,13,14,5}, {11... 阅读全文

posted @ 2016-03-11 15:57 海南一哥 阅读(182) 评论(0) 推荐(0) 编辑

【图的DFS】图的DFS非递归算法

摘要: 在DFS的递归算法中,DFS框架如下: 1访问起点v0 2依次以v0的未访问的连接点为起点,DFS搜索图,直至图中所有与v0路径相通的顶点都被访问。 3若该图为非连通图,则图中一定还存在未被访问的顶点,选取该顶点为起点,重复上述DFS过程,直至图中全部顶点均被访问过为止。 而在非递归的DFS框架... 阅读全文

posted @ 2016-03-11 15:41 海南一哥 阅读(2492) 评论(0) 推荐(0) 编辑

【图的最短路径】迪杰斯特拉算法求图的最短路径

摘要: 要求:求带权有向图中某一结点到其他结点的最短路径。 用迪杰斯特拉算法求解,迪杰斯特拉算法书上的描述如下: 对于图G=(V,{E}),将图中的顶点归为两组: 第一组S:已求出的最短路径的终点集合(开始为{v0}) 第二组:V-S尚未求出的最短路径的顶点的集合(开始为V-{v0}的全部顶点) 该算法... 阅读全文

posted @ 2016-03-11 15:01 海南一哥 阅读(329) 评论(0) 推荐(0) 编辑

求解n皇后

摘要: 要求:在国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法 思路:很直观的想法就是在棋盘上一个一个皇后的摆,如果冲突,则摆放在另一个位置,直至此次可以把n各皇后摆好而不产生冲突,则说明此种方法为一个解。然后将最后一个放置的皇后换个位置摆放... 阅读全文

posted @ 2016-03-11 14:31 海南一哥 阅读(207) 评论(0) 推荐(0) 编辑

求某一字符串的最长重复子串

摘要: 要求:给定一个字符串,求该字符串的最长重复子串,最长重复子串是指在一个主串中,重复子串中最长的那一个,如:abcdefadef 则答案为:def。 预备知识:要解决此题,要用到后缀数组(用指针数组来表示) 思路:先用后缀数组存储主串的每个子串的后缀,然后对后缀数组中的元素进行排序。最后通过扫描相... 阅读全文

posted @ 2016-03-11 14:24 海南一哥 阅读(489) 评论(0) 推荐(0) 编辑

导航