算法
hust_liye
程序猿一枚!
展开
-
二分查找
算法要求编辑必须采用顺序存储结构 2.必须按关键字大小有序排列。算法复杂度编辑假设其数组长度为n,其算法复杂度为o(log(n)) intBinSearch(SeqList*R,intn,KeyTypeK) { //在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1 intlow=0,high=n-1,mid;//置当前查找区间上、下界的初值 while(low<=hi原创 2015-08-29 14:44:35 · 314 阅读 · 0 评论 -
二叉排序树
二叉排序树又称“二叉查找树”、“二叉搜索树”。二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树:1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3. 它的左、右子树也分别为二叉排序树。 二叉排序树通常采用二叉链表作为存储结构。中序遍历二叉排序树可得到一个依据关键字的有序转载 2015-07-09 20:13:24 · 324 阅读 · 0 评论 -
平衡二叉树AVL
一步一步写平衡二叉树(AVL树)作者:C小加 更新时间:2012-8-20 平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. Landis发明了这棵树,所以它又叫AVL树。平衡二叉树要求对于每一个节点来说,它的左右子树的高度之差不能超过1,如果插入或者删转载 2015-07-09 20:31:45 · 427 阅读 · 0 评论 -
红黑树
转 推荐阅读:Left-Leaning Red-Black Trees, Dagstuhl Workshop on Data Structures, Wadern, Germany, February, 2008. 直接下载:http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf--------------转载 2015-07-09 20:36:40 · 356 阅读 · 0 评论 -
伙伴算法
转载自 http://www.douban.com/note/355211972/最近在尝试做一些系统优化的工作,常常需要用到内存缓存的功能,想要自己做一个内存管理系统。想起以前学过linux内核原理,linux内核的内存管理用的是伙伴算法,于是上网研究了下这个算法。一.算法概览可以在维基百科上找到该算法的描述,大体如是:分配内存:1.寻找大小合适的内存块(大于等于所需大小并且转载 2015-07-14 15:43:41 · 764 阅读 · 0 评论 -
线索二叉树1
线索二叉树一、线索二叉树的原理 通过考察各种二叉链表,不管儿叉树的形态如何,空链域的个数总是多过非空链域的个数。准确的说,n各结点的二叉链表共有2n个链域,非空链域为n-1个,但其中的空链域却有n+1个。如下图所示。 因此,提出了一种方法,利用原来的空链域存放指针,指向树中其他结点。这种指针称为线索。 记ptr指向二叉链表中的一转载 2015-06-29 22:10:55 · 348 阅读 · 0 评论 -
线索二叉树
n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。线索二叉树数据结构二叉树的遍历本质上是将一个复杂的非线性结构转换为线性结构,使每个结点都有了唯一前驱和后继(第一个结点无前驱,最后一个结点无后继)。对于二叉树的一个结点,查找其左右子女是方便的,其前驱后转载 2015-06-29 21:52:50 · 640 阅读 · 0 评论 -
各排序算法的复杂度
1.冒泡排序时间复杂度:O(n^2)2.选择排序时间复杂度:O(n^2)3.插入排序时间复杂度:O(n^2)4.快速排序时间复杂度:最理想情况O(n*log2 n),最坏O(n^2)5.堆排序时间复杂度:O(n*log n)6.归并排序时间复杂度:O(n*log2 n)转载 2015-04-30 17:11:17 · 247 阅读 · 0 评论 -
排序加测试
#include#include#includeusing namespace std;void insert_sort(int a[], int n){ int i,j,temp; for ( i=1; i<n; i++) { temp = a[i]; for (j=i-1; j>=0&&temp<a[j];j--)原创 2015-04-30 00:11:28 · 261 阅读 · 0 评论 -
排序大全
排序原创 2015-04-29 20:00:39 · 404 阅读 · 0 评论 -
迪杰斯特拉算法2
【1】最短路径最短路径?别乱想哈,其实就是字面意思,一个带边值的图中从某一个顶点到另外一个顶点的最短路径。官方定义:对于内网图而言,最短路径是指两顶点之间经过的边上权值之和最小的路径。并且我们称路径上的第一个顶点为源点,最后一个顶点为终点。由于非内网图没有边上的权值,所谓的最短路径其实是指两顶点之间经过的边数最少的路径。别废话了!整点实际的哈,你能很快计算出转载 2015-07-08 16:05:59 · 667 阅读 · 1 评论 -
迪杰斯特拉算法
/http://blog.csdn.net/v_july_v/article/details/6057286http://blog.163.com/cindy_19810217/http://blog.csdn.net/v_JULY_v/article/details/6126444/*用迪杰斯特拉算法求有向网G的V0顶点到其他顶点的最短路径P,以及其带权长度D。其中P是二维数组,转载 2015-07-08 16:03:09 · 362 阅读 · 0 评论 -
二叉查找树算法的实现
参考文献: 《数据结构(C语言版)》 严蔚敏 吴伟民 编著 开发平台:Ubuntu11.04 编译器:gcc version4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4) 树(Tree)是n(n≥0)个结点的有限集。在任意一棵非空树中:(1)有且仅有一个特定的被称为根(Root)的结点;(2)当n>1时,其余转载 2015-08-29 14:50:21 · 334 阅读 · 0 评论 -
全排列和全组合
原文 http://wuchong.me/blog/2014/07/28/permutation-and-combination-realize/全排列所谓全排列,就是打印出字符串中所有字符的所有排列。例如输入字符串abc,则打印出 a、b、c 所能排列出来的所有字符串 abc、acb、bac、bca、cab 和 cba 。一般最先想到的方法是暴力循环法,即对于每一位,遍历转载 2015-09-04 17:15:37 · 374 阅读 · 0 评论 -
MySQL---索引算法B+/B-树原理(二)
B+/-Tree原理B-Tree介绍B-Tree是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为[2, M]; 3.除根结点以外的非叶子结点的儿子数为[M/2, M]; 4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)转载 2017-04-01 17:46:02 · 267 阅读 · 0 评论 -
MySQL---索引算法B+/B-树原理(一)
B-树1 .B-树定义B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A转载 2017-04-01 17:46:35 · 539 阅读 · 0 评论 -
KMP算法字符串查找子串
题目:经典的KMP算法分析:和KMP算法对应的是BF算法,其中BF算法时间复杂度,最坏情况下可以达到O(n*m),而KMP算法的时间复杂度是O(n + m),所以,KMP算法效率高很多。但是KMP算法不太好理解,其中牵涉到next数组,目标就是让模式串尽可能的往右滑动,减少比较次数,比如a b a b c-1 0 0 1 2比如转载 2015-09-19 14:42:46 · 595 阅读 · 0 评论 -
八大排序算法
原文出处 http://blog.csdn.net/hguisu/article/details/7776068转载请标明出处 写的很详细算法mergepivot存储exchange目录(?)[-]概述1插入排序直接插入排序Straight Insertion Sort 2 插入排序希尔排序Shells Sort3 选择排序简单选择排序转载 2015-09-15 23:10:56 · 271 阅读 · 0 评论 -
分割字符串
原帖地址:http://topic.csdn.net/u/20110526/16/e33f016b-f188-42b7-afce-b4eca9e3546d.html采用 回溯加递归的方法,进行了实现。// test.cpp : Defines the entry point for the console application.///*http:/转载 2015-08-24 09:47:12 · 269 阅读 · 0 评论 -
哈夫曼树与哈夫曼编码
哈夫曼树与哈夫曼编码在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的 路径长度(转载 2015-07-01 21:35:18 · 411 阅读 · 0 评论 -
最小生成树-Prim算法和Kruskal算法
Prim算法1.概览普里姆算法(Prim算法),图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(英语:Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗转载 2015-07-07 19:38:41 · 373 阅读 · 0 评论 -
模拟退火算法(转载)
优化算法入门系列文章目录(更新中): 1. 模拟退火算法 2. 遗传算法 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。 爬山算法实现很简单,其主要缺点是会陷入局转载 2015-04-01 22:21:16 · 336 阅读 · 0 评论