
算法与数据结构
文章平均质量分 85
算法与数据结构的学习!
奋斗&&奋进
I want A++
展开
-
模拟实现二叉搜索树及其性能分析
模拟实现二叉搜索树 概念❓ 二叉搜索树又叫二叉排序树,它或者是一颗空树,或者是具有以下性质的一棵树: 一个根若有左子树,则左子树上所有的节点值都比这个根的节点值来的小 一个根若有右子树,则右子树上所有节点的值都比这个根的节点值来的大 二叉搜索树的任意一棵子树也要满足前述两条要求,也即任何一颗子树也必须是一棵二叉搜索树 基本功能🏎 增 删(较复杂) 查 改 增📦 要清楚,在二叉搜索树上新增节点,新节点都是长在没加节点时树的叶子上的,只不过问题在于新节点长在哪个叶子上,所以首当其冲就是找到新叶子原创 2022-03-22 15:19:26 · 431 阅读 · 0 评论 -
Map和Set接口的常用功能介绍
Map和Set接口 两者的存在意义❓ Map和Set是一种专门用来进行搜索的容器,或者说数据结构,其搜索的效率与具体的实例化子类有关,在学习这两个搜索容器之前,我们所熟知的所搜方式比如有: 直接遍历查找 时间复杂度为O(n),元素越多,遍历就会越慢 二分查找 时间复杂度为O(logn),并且二分查找之前,数组还必须已经是有序了,那这个限制就比较大了 其次上述两种排序,比较适合静态的查找,即在查找过程中最好不要对一份数据进行插入或者删除,但现实是有很多数据时查找的过程中,对数据都会有多多少少的进行原创 2022-03-22 10:17:28 · 718 阅读 · 0 评论 -
几大常见排序的思想+代码
几大常见排序思想 排序分类🌛 插入排序 插入排序/希尔排序 选择排序 选择排序/堆排序 交换排序 冒泡排序/快速排序 归并排序 归并排序 排序的稳定性🚶 两个相等的数据,如果在排序前后能够维持相对位置不变,那就是稳定的排序,否则,不稳定.注意:一个稳定的算法可以实现成不稳定的写法.一个不稳定的算法没法实现成稳定的算法.一般实现了跳跃式的元素交换的排序算法都是不稳定的,跳跃式即不是相邻元素进行了交换. 插入排序🥚 思想(假设升序): 从第二个元素开始,将该元素与其之前的元素逐原创 2022-03-15 09:49:47 · 370 阅读 · 8 评论 -
堆-topK问题-堆排序-优先级队列的对象比较问题
堆-topK问题-堆排序 堆(heap)的概念❓ 以孩子表示法(刷题常见表示法)去表示一颗二叉树,其本质是一种链式存储,那对二叉树的存储,其实还有一种顺序存储,说白了就是拿一个数组去存储一个二叉树,填数组(从0下标开始填)方式是层序遍历 当以层序遍历一棵完全二叉树时,并将遍历到的数据放到数组当中时,并且这课二叉树的某个节点的值总是不大于或者不小于父节点的值,那这棵二叉树就是一个堆 性质🚶 把整棵树的根的下标定为0,那对于完全二叉树:一个节点的下标是i,如果这个节点有双亲,那这个节点的双亲的下标就是(i原创 2022-03-03 18:52:58 · 443 阅读 · 1 评论 -
认识一下二叉树及其常见的一些操作和练习
认识二叉树 树的概念❔ 树是一种非线性数据结构,它是由n(n>=0)个有限节点组成的一个具有层次关系的集合。之所以叫做树,是因为从外观上来看这个结构,其很像一棵树,并且根还在最上面。 关于树的一些基本概念☑️ 节点的度:一个几点向下连了几条边,那这个节点的度就是几 树的度:一棵树中具有最大度的节点的度数就是整棵树的度 叶子节点或终端节点:如果一个节点没有孩子,或者说度为0,那这个节点就是叶子 双亲节点:刚才说的度是一个节点往下连接别的节点,这里的双亲结点就是一个节点往上的第一个节原创 2022-02-26 17:24:43 · 938 阅读 · 14 评论 -
认识栈和队列
认识栈和队列 什么是栈,什么是JVM虚拟机栈,什么是栈帧?✌️ 栈:一种运算受限的线性表,限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 JVM虚拟机栈:JVM中的一块内存区域,该内存一般用于存放局部变量等,之所以叫栈,是因为它具备栈的特性:先进后出。 栈帧:C语言中,每个栈帧对应着一个原创 2022-01-29 12:50:08 · 660 阅读 · 2 评论 -
认识List
对List接口的认识 首先说一下:上一篇文章中编辑泛型顺序表时,构造方法写的是: public MyArrayList() { this.elem = (E[])new Object[10];//顺序表容量初始化为10,作E[]的强转是为了匹配E[]的字段:elem } 有一个问题就是:为什么不写成: this.elem = new E[10]; 因为:java中不可创建泛型数组,这是根据《Effective Java》第五章中说道的: 使用泛型的作用是使得程序在编译期可以检查出与类型相关的错原创 2022-01-27 15:28:19 · 888 阅读 · 0 评论 -
java之初识集合框架
初识集合 什么叫集合框架???? 所谓集合就是指java中已经写好的数据结构,而框架则指的是各种数据结构的一种相互关系。 所谓数据结构就是用以描述和组织数据 java中的集合框架:java Collection Framework,又称为container,是定义在**java.util包下的一组接口(interfaces)和其具体实现类(classes)**比如下图: 对集合的一些基本认识???? 实现了Iterable接口的类可以使用for-each进行遍历 实现List接口的多为一线线性结构:如原创 2022-01-26 20:08:01 · 636 阅读 · 3 评论 -
迪杰斯特拉算法(最短路径和长度都给出)
交通流分配常用的dijkstra算法,用java实现。原创 2022-01-13 15:44:38 · 597 阅读 · 5 评论