数据结构与算法
Python大视觉
这个作者很懒,什么都没留下…
展开
-
Java数据结构和算法(三)——冒泡、选择、插入排序算法
目录1、冒泡排序 2、选择排序 3、插入排序 4、总结 上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简单的排序算法。回到顶部1、冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可。 冒...转载 2019-02-27 16:32:01 · 100 阅读 · 0 评论 -
Java数据结构和算法(十五)——无权无向图
目录1、图的定义 ①、邻接: ②、路径: ③、连通图和非连通图: ④、有向图和无向图: ⑤、有权图和无权图: 2、在程序中表示图 ①、顶点: ②、边: 3、搜索 ①、深度优先搜索(DFS) ②、广度优先搜索(BFS) ③、程序实现 4、最小生成树 5、总结 前面我们介绍了树这种数据结构,...转载 2019-02-28 16:40:46 · 404 阅读 · 0 评论 -
Java数据结构和算法(一)——简介
转载自 https://www.cnblogs.com/ysocean/目录1、数据结构 一、数据结构的基本功能 二、常用的数据结构 2、算法 一、算法的五个特征 二、算法的设计原则 3、总结 本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子。 编程好比是一辆汽车,而数据结构和算法是汽车内部的变...转载 2019-02-25 16:28:49 · 138 阅读 · 0 评论 -
Java数据结构和算法(二)——数组
目录1、Java数组介绍 2、用类封装数组实现数据结构 3、分析数组的局限性 4、总结 上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍。本篇博客我们介绍数据结构的鼻祖——数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要的数据结构,当然每种语言对数组的实现和处理也不相同,但是本质是都是用来存放数据的的结构,这...转载 2019-02-25 16:29:51 · 131 阅读 · 0 评论 -
Java数据结构和算法(十四)——堆
目录1、堆的定义 2、遍历和查找 3、移除 4、插入 5、完整的Java堆代码 在Java数据结构和算法(五)——队列中我们介绍了优先级队列,优先级队列是一种抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,优先级队列可以用有序数组来实现,这种实现方式尽管删除最大数据项的时间复杂度为O(1),但是插入还是需要较长的时间 O(N),因为...转载 2019-02-28 16:39:36 · 108 阅读 · 0 评论 -
Java数据结构和算法(十三)——哈希表
目录1、哈希函数的引入 2、冲突 3、开放地址法 ①、线性探测 ②、装填因子 ③、二次探测 ④、再哈希法 4、链地址法 5、桶 6、总结 Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组、链表、...转载 2019-02-28 16:38:41 · 111 阅读 · 0 评论 -
Java数据结构和算法(十二)——2-3-4树
目录1、2-3-4 树介绍 2、搜索2-3-4树 3、插入 1、节点分裂 2、根的分裂 4、完整源码实现 5、2-3-4树和红黑树 ①、对应规则 ②、操作等价 6、2-3-4 树的效率 通过前面的介绍,我们知道在二叉树中,每个节点只有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。本篇博客...转载 2019-02-28 16:37:40 · 190 阅读 · 0 评论 -
Java数据结构和算法(四)——栈
目录1、栈的基本概念 2、Java模拟简单的顺序栈实现 3、增强功能版栈 4、利用栈实现字符串逆序 5、利用栈判断分隔符是否匹配 6、总结 前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入、删除和查找性能都比较好。对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比如二叉树、哈希表的数据结构。...转载 2019-02-27 16:33:24 · 122 阅读 · 0 评论 -
Java数据结构和算法(五)——队列
目录1、队列的基本概念 2、Java模拟单向队列实现 3、双端队列 4、优先级队列 5、总结 前面一篇博客我们讲解了并不像数组一样完全作为存储数据功能,而是作为构思算法的辅助工具的数据结构——栈,本篇博客我们介绍另外一个这样的工具——队列。栈是后进先出,而队列刚好相反,是先进先出。回到顶部1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只...转载 2019-02-27 16:35:40 · 125 阅读 · 0 评论 -
Java数据结构和算法(六)——前缀、中缀、后缀表达式
目录1、人如何解析算术表达式 2、计算机如何解析算术表达式 3、后缀表达式 ①、如何将中缀表达式转换为后缀表达式? ②、计算机如何实现后缀表达式的运算? 4、前缀表达式 ①、如何将中缀表达式转换为前缀表达式? ②、计算机如何实现前缀表达式的运算? 前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序...转载 2019-02-27 16:37:03 · 206 阅读 · 0 评论 -
Java数据结构和算法(七)——链表
目录1、链表(Linked List) 2、单向链表(Single-Linked List) ①、单向链表的具体实现 ②、用单向链表实现栈 4、双端链表 ①、双端链表的具体实现 ②、用双端链表实现队列 5、抽象数据类型(ADT) 6、有序链表 7、有序链表和无序数组组合排序 8、双向链表 9、总结 前面博客我们在讲解数组中,知道数组作...转载 2019-02-27 16:39:43 · 117 阅读 · 0 评论 -
Java数据结构和算法(八)——递归
目录1、递归的定义 2、求一个数的阶乘:n! 3、递归的二分查找 4、分治算法 5、汉诺塔问题 5、归并排序 6、消除递归 递归和栈 7、递归的有趣应用 ①、求一个数的乘方 ②、背包问题 ③、组合:选择一支队伍 8、总结 记得小时候经常讲的一个故事:从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,一天,老和尚给小和尚讲了一个故...转载 2019-02-27 16:41:19 · 175 阅读 · 0 评论 -
Java数据结构和算法(十)——二叉树
目录1、树 树的常用术语 2、二叉树 3、查找节点 4、插入节点 5、遍历树 6、查找最大值和最小值 7、删除节点 ①、删除没有子节点的节点 ②、删除有一个子节点的节点 ③、删除有两个子节点的节点 ④、删除有必要吗? 8、二叉树的效率 9、用数组表示树 10、完整的BinaryTree代码 11、哈夫曼(Huffman)编码...转载 2019-02-27 16:43:09 · 105 阅读 · 0 评论 -
浅谈 Integer 类
目录1、Integer 类简介 2、Integer 类和 int 的区别 3、Integer 的自动拆箱和装箱 ①、自动装箱 ②、自动拆箱 4、回顾开头的问题 5、测试 突然发现自己对Integer i = 10;这种语法不太明白,于是乎有了这篇文章,那么在讲解 Integer 之前,我们先看下面这段代码: 1 2 3 4...转载 2019-02-27 16:44:21 · 167 阅读 · 0 评论 -
Java中静态代码块、构造代码块、构造函数、普通代码块
目录1、静态代码块 ①、格式 ②、执行时机 ③、静态代码块的作用 ④、静态代码块不能存在任何方法体中 ⑤、静态代码块不能访问普通变量 2、构造代码块 ①、格式 ②、执行时机 ③、构造代码块的作用 3、构造函数 4、普通代码块 5、执行顺序 6、父类和子类执行顺序 在Java中,静态代码块、构造代码块、构...转载 2019-02-27 16:46:03 · 105 阅读 · 0 评论 -
Java数据结构和算法(十一)——红黑树
目录1、红-黑树的特征 2、红-黑树的自我修正 ①、改变节点颜色 ②、右旋 ③、左旋 3、左旋和右旋代码 4、插入操作 5、删除操作 6、红黑树的效率 上一篇博客我们介绍了二叉搜索树,二叉搜索树对于某个节点而言,其左子树的节点关键值都小于该节点关键值,右子树的所有节点关键值都大于该节点关键值。二叉搜索树作为一种数据结构,其查找、插入和删除操作的时间...转载 2019-02-27 16:47:08 · 88 阅读 · 0 评论 -
Java 数据结构与算法引言
原创 2019-03-12 17:34:45 · 148 阅读 · 0 评论