
数据结构与算法
文章平均质量分 53
啪!~
这个作者很懒,什么都没留下…
展开
-
初识数据结构之堆_Java
堆特点堆是一棵完全二叉树,即除了最下边一层其余都是满的状态,最下边一层满足最后一个元素的左侧都是满状态。堆有别于二叉树的一个特点就是其父节点是大于两个子节点的,两个子节点的左右分步没有硬性要求堆通常以数组进行实现,常见的规律有 假设一个节点所在的索引为k,则其父节点所在的索引为k/2,两个子节点的索引分别为2k和2k+1自己实现堆public class Heap<T extends Comparable<T>> { // 用来存储元素的数组 p原创 2022-05-05 22:48:56 · 662 阅读 · 0 评论 -
初始数据结构之符号表_Java(无序符号表、有序符号表)
符号表结构键值对,仅此而已,一个key一个value组成,下边演示的是通过链表形式实现的符号表。并且符号表要求key唯一。自己实现符号表抽象类/** * 符号表(基于链表):符号表最主要的目的就是将一个key和一个value联系起来,共同组成一个键值对数据,允许我们根据key来查找value,并且key具有唯一性 * @author : LiangJie * @date : 2022/5/2 22:56 */public abstract class SymbolTable<原创 2022-05-04 13:47:21 · 814 阅读 · 0 评论 -
初识数据结构之线性表_Java(顺序表、单向链表、双向链表、栈、队列)
线性表概念线性表是一种最为常见的数据结构,其特点是前后元素具有一对一的对应关系,除了第一个元素和最后一个元素以外,其他元素有且仅前边有一个前驱元素,后边有一个后继元素。线性表的分类按照存储结构分为顺序表与链表线性表通用接口/** * 线性表通用接口 * @author : LiangJie * @date : 2022/4/20 20:55 */public interface Linear<T> { // 清空当前线性表 void clear原创 2022-04-20 23:39:49 · 685 阅读 · 0 评论 -
初识算法之中级排序算法篇_Java(希尔排序、归并排序、快速排序)
希尔排序时间复杂度:O(N*log2N) 空间复杂度:O(1)原创 2022-04-19 23:10:54 · 412 阅读 · 0 评论 -
初始算法之初级排序算法篇_Java(冒泡排序、选择排序、插入排序)
思想:从最左边开始,与自己的后一位比大小,自己比后边大,就交换位置继续比,直到比不动。理念:每一轮排序都要把最小的数交换到最左边(也有些教程是把最大的放到最右边,其实是一个意思)特点:效率不高举例:原始数组419376第1轮149376143976143796143769第2轮134679第3轮134679第4轮134679第5轮134.原创 2022-04-13 22:42:31 · 630 阅读 · 0 评论 -
初识算法之时间复杂度、空间复杂度以及排序稳定性
一、 时间复杂度概念:所谓时间复杂度,就是运行某个程序所需要消耗的时间,然后我们使用了数学的函数表示方法对消耗的时间量级做了一个分类。我们需要先熟悉以下大学中我们学习过的函数图像长成啥样:大家看到这张图有没有泛起一点点对数学的厌恶,但是别慌我们主要研究的是这些函数的趋势,换种说法来说就是我们用n表示程序核心代码执行的次数,当n趋近于无穷大的时候,纵轴的走势是什么样的就可以了。从上图以及一些基础的数学推演我们可以得到这样一些结论,当n趋近于无穷大的时候:表达式中的常数项可以进行忽略。举例:f(原创 2022-04-13 21:02:15 · 373 阅读 · 0 评论