数据结构和算法
文章平均质量分 71
盖大大
hello world
展开
-
数据结构和算法-14.程序员常用10种算法
1. 二分查找算法(非递归)1.1 介绍二分查找算法只适用于从有序的数列种进行查找,将数列排序后再进行查找二分查找法的运行时间为对数时间O(log2 n),即查找到需要的目标位置最多只需要log2 n步1.2 代码实现public class BinarySearch { public static void main(String[] args) { int[] arr = {1, 3, 8, 10, 11, 67, 100}; int index =原创 2021-04-08 10:49:56 · 347 阅读 · 3 评论 -
数据结构和算法-13.图
1. 图的基本概念线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱当我们需要表示多对多的关系时,就用到了图两个节点之间的连接称为边(edge),节点也可以称为顶点(vertex)带权图:也叫网2. 图的表示方式两种:二维数组表示(邻接矩阵);链表表示(邻接表)2.1 邻接矩阵邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于n个顶点的图而言,矩阵是的row和col表示的是1…n个点2.2 邻接表邻接矩阵需要为每个顶点都分配n个边的空间,有很多边是不存在原创 2021-03-24 14:52:39 · 8701 阅读 · 0 评论 -
数据结构和算法-12.多路查找树
1. 二叉树与B树1.1 二叉树存在的问题二叉树的节点很多,会存在以下问题在构建二叉树时,需要多次进行IO操作,速度慢节点海量,也会造成二叉树的高度很大,降低操作速度1.2 多叉树允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)2-3树,2-3-4树都是多叉树,多叉树通过重新组织节点,减少树的高度,能对二叉树进行优化1.3 B树的基本介绍2-3B树通过重新组织节点,降低树的高度,并且减少IO读写次数来提升效率文件系统及数据库系统原创 2021-03-15 15:59:16 · 80 阅读 · 0 评论 -
数据结构和算法-11.树结构实际应用
1. 堆排序2. 赫夫曼树3. 赫夫曼编码4. 二叉排序树5. 平衡二叉树(AVL树)原创 2021-03-12 15:07:42 · 276 阅读 · 0 评论 -
数据结构和算法-10.树结构基础部分
1. 二叉树1.1 为什么需要二叉树数组存储方式优点:通过下标方式访问元素,速度快。对于有序数组,可以使用二分查找提高检索速度缺点:如果要检索具体某个值,或插入值会整体移动,效率低链式存储方式优点:插入,删除节点,只需要链接到链表即可,效率很好缺点,进行检索时,需要从头节点开始遍历,效率较低树存储方式2.3....原创 2021-02-24 17:13:03 · 85 阅读 · 1 评论 -
数据结构和算法-9.哈希表
1. 哈希表介绍哈希表(Hash table,也叫散列表),是根据(key value)而直接进行访问的数据结构,通过把关键码值映射到表中一个位置来访问记录,以加快查找速度,这个映射函数叫做散列函数,存放记录的数组叫做散列表2. Google面试题有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,姓名,年龄…),当输入该员工的 id 时,要求查找到该员工的所有信息...原创 2021-02-23 14:16:32 · 81 阅读 · 0 评论 -
数据结构和算法-8.查找算法
1. 查找算法介绍顺序(线性)查找二分查找/折半查找插值查找斐波那契查找2. 线性查找public class SeqSearch { public static void main(String[] args) { int arr[] = {1, 9, 11, -1, 34, 89}; int index = seqSearch(arr, 11); if (index == -1) { System.out.p原创 2021-02-22 17:18:28 · 61 阅读 · 0 评论 -
数据结构和算法-7.排序算法
1. 排序算法的介绍排序也叫排序算法(Sort Algorithm),排序是将一组数据,按照指定的顺序进行排列的过程分类:内部排序,将需要处理的所有数据都加载到内部存储器中进行排序外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序2. 算法的复杂度2.1 算法的时间复杂度度量一个算法执行时间的两种方法1.事后统计这个方法可行,但又两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机硬件等环境因素,这种方式要在同一台计原创 2021-02-22 14:09:10 · 259 阅读 · 1 评论 -
数据结构和算法-6.递归
1.递归(Recursion)介绍递归就是自己调用自己,每次调用传入不同的变量。递归有利于解决复杂的问题,同时可以让代码变得简洁1.1 递归调用机制打印问题阶乘问题 public static int factorial(int n) { if (n == 1) { return 1; } else { return factorial(n - 1) * n; } }1.原创 2020-11-20 12:34:17 · 94 阅读 · 0 评论 -
数据结构和算法-5.栈
1.栈的基本介绍1.1 栈的实际需求输入一个表达式计算式:722-5+1-5+3-3栈(stack)是一个先进后出(FILO-First In Last Out)的有序序列允许插入和删除的一端,为变化的一端,成为栈顶(Top),另一端为固定的一端,成为栈底(Bottom)最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素相反,最后放入的元素先删除,最先放入的元素最后删除出栈(pop)和入栈(push)的示意图1.2 栈的应用场景子程序的调用:在跳往子程序前,会先将下个指令的原创 2020-11-19 15:37:10 · 171 阅读 · 0 评论 -
数据结构和算法-4.链表
1.链表(Linked List)介绍1.1 内存结构1.2 逻辑结构链表属于线性结构1.3 链表特点链表是以节点的方式来存储data域存放数据,next域指向下一个节点,链表的各个节点不一定是连续存储链表分带头节点的和没有头节点的链表2. 链表应用场景2.1 链表实现使用带hed头的单向链表实现–水浒英雄排行榜管理完成对英雄人物的增删改查第一种方法在添加英雄时,直接添加到链表的尾部第二种方式在添加英雄时,根据排名将英雄插入到指定位置。如果有这个排名,则添加失败2.2原创 2020-11-11 16:47:12 · 178 阅读 · 0 评论 -
数据结构和算法-3.稀疏数据和队列
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结学习目标:学习内容:学习时间:学习产出:前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。原创 2020-11-05 16:52:50 · 276 阅读 · 1 评论