
数据结构
文章平均质量分 80
u013322907
这个作者很懒,什么都没留下…
展开
-
链表操作
1、单链表的建立、查找、插入、删除、排序原创 2014-07-16 16:34:25 · 371 阅读 · 0 评论 -
栈
#include using namespace std;struct stack{ int *data; int top; int max; stack() { max=10; top=-1; data=new int[max]; } ~stack() { delete []data; }};void Push(stack &s,int i){原创 2014-07-15 09:41:35 · 299 阅读 · 0 评论 -
快速排序
从头遍历的快速排序#include#include #include #include using namespace std;int partition2(int * p,int low,int high){int t=p[low];int a=low+1,b=low+1;//一个人蹲点 一个人去遍历原创 2014-09-08 15:31:59 · 287 阅读 · 0 评论 -
Trie树
1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是转载 2014-08-24 15:55:27 · 400 阅读 · 0 评论 -
二叉搜索树BST
#include using namespace std;struct node{ int data; node *lchild,*rchild;};//插入void Insert(node *&T,int data){ if(T==NULL)//空树时 { T=new node; T->data=data; T->lchild=NULL; T->rchi原创 2014-07-21 16:07:05 · 400 阅读 · 0 评论 -
AVL树的旋转
AVL树的旋转http://blog.youkuaiyun.com/gabriel1026/article/details/6311339 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log转载 2014-08-24 10:27:03 · 388 阅读 · 0 评论 -
B树B+树B*树
二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;转载 2014-08-24 15:30:54 · 344 阅读 · 0 评论 -
最小生成树
最小生成树分类: 经典算法设计 面试专题——树/图三Kruskal算法 设G = (V,E)是无向连通带权图,即一个网络。E中的每一条边(v,w)的权为c[v][w]。如果G的子图G’是一棵包含G的所有顶点的树,则称G’为G的生成树。生成树上各边权的总和称为生成树的耗费。在G的所有生成树中,耗费最小的生成树称为G的最小生成树。构造最小生成树的两种转载 2014-08-25 10:44:11 · 450 阅读 · 0 评论 -
最短路径—Dijkstra算法和Floyd算法
最短路径—Dijkstra算法和Floyd算法原文:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.htmlDijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为转载 2014-08-25 11:00:09 · 500 阅读 · 0 评论 -
常见和链表相关的算法
原味一、 链表排序 链表排序和数组排序的思路类似,只是链表操作起来比较麻烦,因为不能随机访问,所以只能借助于类似于前置或后置插入,添加等概念来完成。下面给出了链表排序的几种方法。辅助代码://单链表节点的定义typedef struct LinkNode{ int val; struct LinkNode* next;转载 2014-07-31 11:38:17 · 481 阅读 · 0 评论 -
多路归并排序
下面的问题描述及相关文字都参考于优快云中JULY的博客,在此对JULY表示感谢。JULY的博客地址如下:http://blog.youkuaiyun.com/v_JULY_v/article/details/6451990原创 2014-07-25 19:28:50 · 9359 阅读 · 0 评论 -
字符串匹配
1、暴力搜索首先将匹配串和模式串左对齐,然后从左向右一个一个进行比较,如果不成功则模式串向右移动一个单位。原创 2014-07-22 20:31:06 · 321 阅读 · 0 评论 -
哈希表
总结部分来自:http://blog.youkuaiyun.com/chenhuajie123/article/details/9210529哈希表 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构。它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度。这个映射函数就做散列函数,存放记录的数组叫做散列表。转载 2014-07-24 09:27:54 · 457 阅读 · 0 评论 -
堆排序
堆排序==二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小堆。下图展示一个最小堆转载 2014-07-23 11:06:06 · 270 阅读 · 0 评论 -
快速排序(递归和非递归)
#include usingnamespace std;intpartition(int*a, intl, inth){ intx = a[l]; inti = l; intj = h+1; inttemp; while(i while(转载 2014-07-23 19:47:18 · 499 阅读 · 0 评论 -
位图法排序
位图法,bit-map用一个 20 位长的字符串来表示一个所有元素都小于 20 的简单的非负整数集合,边框用如下字符串来表示集合{1,2,3,5,8,13}:0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0上述集合中各数对应的位置则置 1,没有对应的数的位置则置 0。原创 2014-07-25 14:02:13 · 514 阅读 · 0 评论 -
分治法求解方程的解
问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后5位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1原创 2014-07-24 21:07:12 · 1388 阅读 · 0 评论 -
排序
#include using namespace std;#define DEBUG 1void Print(int a[],int length);void InsertSort(int *a,int length);// 直接插入排序void BubbleSort(int a[],int length);//冒泡排序void SelectSort(int a[],int原创 2014-07-19 19:41:08 · 305 阅读 · 0 评论 -
二叉树的操作
#include #include using namespace std;#include #include /*二叉树的 : 建立先序遍历中序遍历后序遍历层次遍历二叉树的深度二叉树的宽度*/struct BiNode{int data;BiNode *left,*right;};void creat原创 2015-03-18 21:46:11 · 467 阅读 · 0 评论