
数据结构与算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
冒泡排序 c++实现
冒泡排序是最容易实现的算法,相信很多人能够熟练地打出,但为了排序系列的完整,还是把它写出来了原创 2017-12-21 17:24:59 · 447 阅读 · 0 评论 -
快速排序 c++实现2.0
快速排序#include using namespace std;int arr[1001];void quick_sort(int front, int rear){ if(front >= rear) return; int q = arr[front], i = front, j = rear; while(i < j){原创 2017-12-20 10:17:48 · 271 阅读 · 0 评论 -
插入排序 c++实现
插入排序的重点在于从后往前面的有序列推进,需要注意到达终点时的处理与其他不同。#include using namespace std;int arr[1001];void insert_sort(int n){ int tmp; for(int i = 1; i < n; i++){ tmp = arr[i]; for(int原创 2017-12-20 08:56:02 · 318 阅读 · 0 评论 -
归并排序 c++实现
归并排序的核心是划分,不断地把数组分成两段#include #include using namespace std;int arr[1001];void merge_sort(int mi, int mj){ if(mi == mj) return; //if(mj - mi == 1) {if(arr[mi] > arr[mj]) swap(arr[mi]原创 2017-12-19 23:23:47 · 717 阅读 · 0 评论 -
快速排序 c++实现
快速排序的c++实现方法原创 2017-12-13 12:40:22 · 326 阅读 · 0 评论 -
堆排序 c++实现
堆排序算法堆排序是先建立一个堆,然后在在堆首的元素放在末尾,例如建立的是大顶堆,则对应的是升序排序。然后再对这个变形了的堆进行再次建立堆,只是把当前的最后一个数据忽略。#include #include using namespace std;int heap[1001];void HeapAdjust(int id, int sz){ int l = 2 * id;原创 2017-12-19 22:46:43 · 1033 阅读 · 0 评论 -
哈弗曼树
哈弗曼树原创 2017-12-30 19:35:11 · 441 阅读 · 0 评论 -
数据结构与算法目录
数据结构与算法的整合目录原创 2017-12-24 11:24:19 · 371 阅读 · 0 评论 -
线索二叉树
当以二叉链表作为存储结构时,只能找到结点的左右孩子的信息,而不能确定结点在任一序列下的前驱与后继信息,这种信息只有在遍历的动态过程中才能得到。原创 2017-12-26 13:48:01 · 271 阅读 · 0 评论 -
二叉查找树和AVL树
二叉查找树原创 2017-12-26 19:00:43 · 367 阅读 · 0 评论 -
记忆化搜索---最长子串
问题:两个字符串求其最长可不连续相同子串,打印出子串思考:这样的问题可以用回溯的方法,通过递归把每种情况都遍历一遍,再得出最佳结果,但是这样的解法的时间发杂度为2的n次方,当字符串长度达到10以上时首先空间会溢出,再者时间消耗太多。所以考虑用记忆化搜索,用二维数组存储两个字符串中没两个元素之间的关系。在用二维数组存储关系的难题在于如何去遍历,让每个节点的值是到达它的最大值,从子串的定义可以...原创 2017-12-18 23:01:11 · 313 阅读 · 0 评论 -
希尔排序 c++实现
希尔排序是插入排序的扩展#include using namespace std; int arr[1001]; shell_sort(int n, int ad){ //增量 for(int i = ad; i < n; i++){ int tmp = arr[i]; int j = i - ad; whil原创 2017-12-21 09:08:56 · 689 阅读 · 0 评论 -
基数排序 c++实现
基数排序是一个稳定的排序,其效率与位数有关,且消耗多余等大的空间来存放数组原创 2017-12-21 17:20:10 · 545 阅读 · 0 评论 -
哈弗曼树:最短电文
对于一份英文电文,我们可以通过二进制前缀编码(Huffman Coding),将其变为只含“01”的二进制序列。现假设该电文只含小写英文字母(a-z),且至少包含两个不同的字符。要求我们求出该电文经过编码后的长度。原创 2017-12-22 17:55:24 · 787 阅读 · 0 评论 -
二叉树构造:二叉树的广度优先遍历
输入一棵二叉树的先序遍历序列和中序遍历序列,输出它的广度优先遍历序列。原创 2017-12-22 18:52:17 · 1089 阅读 · 0 评论 -
最短子串
输入两个字符串S,T(均由大写英文字母组成,且length(S)>=length(T)),要求在S中找出包含T中所有字符的最短子串,假设最短子串唯一。(有兴趣的同学可以尝试用O(n)的时间复杂度解决该问题,注:本题无该要求)原创 2017-12-23 10:37:31 · 1767 阅读 · 1 评论 -
模式匹配:KMP算法
传统的模式匹配算法是不断地查找、回溯,但回溯的过程浪费时间,但在弄清楚匹配的子串结构时并不需要回溯,而是不断地向前匹配,降低时间复杂度原创 2017-12-24 09:54:40 · 566 阅读 · 0 评论 -
最短路径:Dijkstral算法
为求得这些最短路径, Dijkstra提出按路径长度的递增次序, 逐步产生最短路径的算法。首先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,直到从顶点v到其它各顶点的最短路径全部求出为止。原创 2017-12-24 14:02:11 · 737 阅读 · 0 评论 -
最短路径:Floyd算法
所有顶点之间的最短路径原创 2017-12-24 14:22:26 · 341 阅读 · 0 评论 -
AOE网络
AOE网络(Activity On Edges)原创 2017-12-25 09:55:09 · 836 阅读 · 0 评论 -
图的相关概念与存储方式
图的相关概念与存储方式原创 2017-12-25 10:18:04 · 383 阅读 · 0 评论 -
最短路径:孙悟空找唐僧
唐僧被妖怪关在迷宫中。孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置。假设迷宫是一个n*m的矩阵,它有两种地形,0表示平地,1表示沼泽,孙悟空只能停留在平地上。孙悟空目前的位置在坐标(sx,sy)处,他可以向上下左右四个方向移动。请你帮助孙悟空计算一下,迷宫中是否存在一条路从他所在位置(sx,sy)到达唐僧所在位置(tx,ty),如果有,请计算出最短的一条路径。原创 2017-12-22 14:10:06 · 1083 阅读 · 0 评论 -
硬币问题
硬币问题#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int maxn = 1000 + 5;bool G[maxn][maxn];int base[maxn];int sd[maxn], ld[maxn];i...原创 2017-12-13 13:54:27 · 244 阅读 · 0 评论