随笔分类 - DataStructure
摘要:1.简介 查找集合S中第k个最小元。 平均O(NlogN) 最坏O(N2) 2.实现
阅读全文
摘要:1.简介 分治和递归 三数中值分割 最坏时间为O(N2) 最好时O(NlogN) 平均情况O(NlogN) 2.实现
阅读全文
摘要:1.简介 归并算法是递归地将数组分成两个小数组,分别对两个数组进行排序,然后合并两个有序数组,递归的终止条件是要合并的两个数组分别只有一个元素。 合并两个有序数组的算法为: 取两个输入数组A,B和一个输出数组C,以及三个计数器Aptr,Bptr,Cptr,分别指向三个数组的开始位置; 比较A[Apt
阅读全文
摘要:1.简介 建立一个最大堆(线性时间) 执行N-1次下滤操作,每次下滤将堆的最后一个元素同第一个元素进行交换。 时间复杂度为:O(NlogN) 2.实现
阅读全文
摘要:1.简介 shellsort又称为最小增量排序。 使用增量序列h1,h2,...ht,在使用增量hk的一趟排序后,对于间隔为k的元素都是排序后的。 使用希尔增量排序时最坏运行时间为theta(N2) 增量序列通常的选择为:ht = N/2,hk = hk+1/2 2.实现
阅读全文
摘要:1.原理 插入排序由N-1趟排序组成,对于P=1趟到第P=N-1趟,插入排序保证位置0到位置P上的元素为已排序状态。 时间复杂度为O(N2),平均时间为Theta(N2) 2.实现
阅读全文
摘要:1.分类 内部排序:假设整个排序工作能够在主存中完成(元素的个数相对较少)。 外部排序:不能在主存中完成,而必须在磁盘或者磁带上完成的排序。 2.内部排序: 1.插入排序 2.希尔排序 3.归并排序 4.快速排序
阅读全文
摘要:1.二叉树 1. 定义: 是每个节点最多只能有两个儿子的树。 2.应用 查找树:所有节点左小右大 平衡树:左右子树深度差1 判定数:分支查找树(例如12个球如何只称3次就能分出轻重) 带权树:路径带权 最优树:带权路径长度最短的树,通信中的压缩编码 2.查找二叉树 1.定义 为每个节点指定一个关键值
阅读全文
摘要:1.树的基础 使用递归定义:一棵树是一些点的集合。这个集合若非空,则树由树根(根节点)和0或者多个非空子树组成。每个子树都和根节点通过一个边相连。 一棵树是N个节点和N-1条边的集合。 n1到nk的路径为节点n1,n2,...,nk的一个序列,路径长时路径上的边数:k-1; 节点的深度是该节点到根的
阅读全文
摘要:1.递归与非递归的利弊 非递归程序一般比等价的递归程序要快,但是速度代价是由于去除了递归使得程序的清晰性不足。
阅读全文
摘要:1.队列的基础 队列是插入只能在一端(后端),删除只能在另一端(前端)的线性表,是先进先出模型。 1. 入队:在表的末端插入; 2. 出队:在表的开头删除元素; 2.队列的应用 汽车加油站 模拟打印机缓冲区 CPU分时系统、计算机网络 打印杨辉三角 3.队列的数组实现 1. fatal.h 2.qu
阅读全文
摘要:1.栈基础 栈是插入和删除操作限制在一端(即栈顶)的表,是先进后出模型。 1.栈的特点 入栈:新元素的插入,成为新的栈顶元素; 出栈:栈顶元素的删除,栈顶指向相邻元素。 2.应用场景: 数制转换 括号匹配的检验 表达式求值 迷宫求解 行编辑程序 二叉树的遍历 2.栈的链表实现 1. fata.h 2
阅读全文
摘要:1.list.h 2. fatal.h 3.list.c 4.testlist.c
阅读全文
摘要:整理自: http://baike.baidu.com/link?url=lRiY45uggf5cxgOJ7CvvetViKimz4OphF1AwwEfYX8lLA1DdkC-lIhTs7jggaV1WkwvTTzLC9kdP5m4U4GzyokfdDDy_H_lmt0XUpPskspbhLSzw_
阅读全文