随笔分类 -  数据结构

摘要:回顾:排序分类 (一)插入类 直接插入排序 折半插入排序 希尔排序 (二)交换类 冒泡排序 快速排序 (三)选择类 简单选择排序 堆排序 (四)归并类 归并排序 一:复杂度总结 (一).时间复杂度 1.平均情况下:快些排队(快希排堆) 2.最坏情况下 (二).空间复杂度 (三).其他:容易插,起的好 阅读全文
posted @ 2018-09-23 00:06 山上有风景 阅读(1973) 评论(0) 推荐(0) 编辑
摘要:一:基本思想 二:图解实现过程 三:代码实现 四:快速排序优化 (一)优化选取枢轴 改进方法 (二)优化不必要的交换 (三)优化小数组 (四)优化递归操作(尾递归) 尾递归 递归与尾递归总结 普通递归 尾递归 代码实现 五:性能分析 阅读全文
posted @ 2018-08-22 10:01 山上有风景 阅读(6970) 评论(0) 推荐(2) 编辑
摘要:图解排序算法(四)之归并排序 定义 基本思想 分而治之 实现 递归实现 非递归实现 性能分析 阅读全文
posted @ 2018-08-21 20:38 山上有风景 阅读(577) 评论(0) 推荐(1) 编辑
摘要:一:定义 二:堆排序算法 三:图解演示,构造堆(大顶堆) 在构造有序堆时,我们开始只需要扫描一半的元素(n/2-1 ~ 0)即可,为什么? 因为(n/2-1)~0的节点才有子节点,如图1,n=8,(n/2-1) = 3 即3 2 1 0这个四个节点才有子节点 第一次找到[n/2]处,进行构造: 我们 阅读全文
posted @ 2018-08-21 17:01 山上有风景 阅读(13281) 评论(2) 推荐(14) 编辑
摘要:图解排序算法(二)之希尔排序 定义 基本思想 图解算法 代码实现 性能分析 阅读全文
posted @ 2018-08-21 13:31 山上有风景 阅读(562) 评论(0) 推荐(1) 编辑
摘要:经典排序算法 直接插入排序算法及其改进(稳定) 定义: 实现思想 基本思想 代码实现 性能分析 阅读全文
posted @ 2018-08-21 12:57 山上有风景 阅读(2471) 评论(0) 推荐(0) 编辑
摘要:一:简单选择排序 定义: 实现: 性能分析: 阅读全文
posted @ 2018-08-21 12:10 山上有风景 阅读(373) 评论(0) 推荐(0) 编辑
摘要:定义 数据: 版本一 冒泡排序(我们最常想到的) int main() { SqList s; s.length = 0; int i; int a[10] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 }; for (i = 0; i < 10; i++) { s.r[i + 阅读全文
posted @ 2018-08-21 10:52 山上有风景 阅读(503) 评论(0) 推荐(0) 编辑
摘要:一:定义 二:排序的稳定性 三:内排序和外排序 内排序和外排序的区分就是: 定义: 影响因素: 四:排序算法的种类 按照算法的复杂度分为两大类: 五:结构定义 阅读全文
posted @ 2018-08-21 09:58 山上有风景 阅读(450) 评论(0) 推荐(0) 编辑
摘要:一:概述 二:散列表查找步骤 (1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录; (2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。 三:散列函数的构造方法 要求: 1.计算简单 2.散列地址分布均匀 (一)直接定址法(使用某个线性函数值作为散列地 阅读全文
posted @ 2018-08-21 09:22 山上有风景 阅读(1687) 评论(0) 推荐(0) 编辑
摘要:前提 B+树 下图就是B+树,灰色关键字,在根节点出现,在叶子节点中再次列出。 与B树比较 阅读全文
posted @ 2018-08-20 22:49 山上有风景 阅读(1596) 评论(0) 推荐(0) 编辑
摘要:B 树 B树与B+树 一:定义 B树(B-树)是一种平衡的多路查找树。2-3树和2-3-4树都是B树的特例。节点最大的孩子数组称为B树的阶(order),因此,2-3树是3阶B树,2-3-4树是4阶B树。 (一)m阶下的B树 一棵m阶的B树满足下列条件: 1.树中每个结点至多有m个孩子。 2.除根结 阅读全文
posted @ 2018-08-20 22:42 山上有风景 阅读(2023) 评论(0) 推荐(0) 编辑
摘要:一:2-3-4树 (一)插入实现 构建一个数组为{7,1,2,5,6,9,8,4,3}的2-3-4树的过程 (二)删除实现 阅读全文
posted @ 2018-08-20 21:45 山上有风景 阅读(260) 评论(0) 推荐(1) 编辑
摘要:前提 多路查找树-B树 普通树或二叉树等一个结点只能存一个元素,比如BST、AVL、红黑等都是为了内存而设计; B树每个结点可以有n个元素和n+1个孩子,减少树的高度,减少树的度,所以可以降低内存读取外存的次数;( 对二叉查找树的改进。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据, 阅读全文
posted @ 2018-08-20 21:30 山上有风景 阅读(565) 评论(0) 推荐(0) 编辑
摘要:前提 我们之前的二叉排序树的插入(构建)是按照我们输入的数据来进行的,若是我们的数据分布不同,那么就会构造不同的二叉树 { 62, 88, 58, 47, 35, 73, 51, 99, 37, 93 } { 35, 37, 47, 51, 58, 62, 73, 88, 93, 99 } 我们发现 阅读全文
posted @ 2018-08-20 20:13 山上有风景 阅读(9634) 评论(1) 推荐(4) 编辑
摘要:前提 前面的查找我们都是静态查找,因为数据集是有序存放,查找的方法有多种,可以使用折半,插值,斐波那契等,但是因为有序,在插入和删除操作上的效率并不高。 这时我们就需要一种动态查找方法,既可以高效实现查找,又可以使得插入和删除效率不错,这时我们可以考虑二叉排序树 二叉排序树 一:定义 又称为二叉搜索 阅读全文
posted @ 2018-08-20 10:54 山上有风景 阅读(869) 评论(3) 推荐(1) 编辑
摘要:前提 下面我们需要了解三种线性索引索引方式:稠密索引,分块索引和倒排索引 一:稠密索引 优点 缺点 案例实现:年级最多1000个学生,现在进行稠密索引 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #in 阅读全文
posted @ 2018-08-19 10:35 山上有风景 阅读(1641) 评论(1) 推荐(1) 编辑
摘要:前提 我们下面将介绍折半查找(二分查找),插值查找,斐波那契查找 一:折半查找 (一)定义 (二)查找过程 (三)代码实现 (四)性能分析 二:插值查找(按比例查找法) (一)算法分析: 首先我们对折半公式进行改写: 通过类比,我们可以将查找的点改进为如下: (二)基本思想: (三)代码实现: (四 阅读全文
posted @ 2018-08-19 00:29 山上有风景 阅读(4578) 评论(0) 推荐(4) 编辑
摘要:一:概论(可联系数据库) (一)查找表 (二)关键字 (三)主关键字 (四)次关键字 二:查找 (一)定义 (二)分类(两大种:静态和动态) 1.静态查找表:只作查找操作的查找表 2.动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的每个数据元素 三:顺序表查找 阅读全文
posted @ 2018-08-18 20:00 山上有风景 阅读(790) 评论(0) 推荐(0) 编辑
摘要:一:定义 (一)最短时间 (二)AOE网(Activity On Edge Network) 补充:相比于AOV网 (三)关键路径 二:AOE和AOV(活动和事件|顶点与弧) AOE与AOV对比 三:四个必要参数 (一)事件最早发生时间etv(earliest time of vertex) (二) 阅读全文
posted @ 2018-08-18 19:21 山上有风景 阅读(7593) 评论(2) 推荐(8) 编辑