首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
数据结构和算法
Hombio
创建于2022-02-07
订阅专栏
数据结构和算法学习与实践
暂无订阅
共17篇文章
创建于2022-02-07
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
数据结构和算法-LRU缓存
定义 一般说的缓存位于内存,用于提高程序访问数据的效率。缓存涉及的操作有 put:数据放入缓存 get:从缓存获取数据 缓存的空间是有限的,当缓存空间被用满之后,需要按照某种策略替换数据,避免溢出。
数据结构和算法-哈希表
定义 散列表(Hash table,也叫哈希表),是数组的拓展。数组支持通过索引以O(1)的时间复杂度随机访问到值,而散列表支持通过任意类型的key值以O(1)的时间复杂度访问到值。 实现 散列表实现
数据结构和算法-堆
定义 堆是一个完全二叉树 堆中每一个节点的值都必须大于等于(或者小于等于)子树中每个节点的值 每一个节点的值都必须大于对于子树中每个节点的值的堆称为大顶堆,反之为小顶堆。 实现 因为堆是一个完全二叉树
数据结构和算法-二叉查找树(BST)
前置知识 学习二叉查找树之前,需要先掌握:树 定义 二叉树中节点的左子树的所有节点的值都小于节点的值,右子树的所有节点的值都大于(等于)节点的值时,具有这个性质的的二叉树即为二叉查找树,简称BST。
数据结构和算法-树
定义 树是一种非线性表结构,是n(>=0)个节点的有限集。当n=0是,称之为空树。任何一颗非空树有以下两个特征 有且只有一个称为root的节点,即根节点 其余节点可以划分为m(m=0)个互不相交有限集
数据结构和算法-二分查找
定义 在一个有序数组中,以O(logn)的时间复杂度找到指定的元素的算法,称之为二分查找。 标准实现 结束条件:low > high mid=(mid+high)/2 为了避免加法溢出,优化为 mid
数据结构和排序算法-O(n)-排序算法
前言 经典的线性排序算法有以下三种,这三种排序算法对数据集的要求比较严格,因此应用不广。 桶排序 计数排序 基数排序 桶排序 定义 将要排序的数据分到几个有序的桶里,每个桶里的数据再单独排序。桶内排完
数据结构和算法-O(nlogn)-排序算法
前言 时间复杂度O(logn)的经典排序算法有以下2种 归并排序 快速排序 归并排序 实现 归并排序使用到了递归,我们可以按照三步走战略写出递归代码 发现规律,推到出递归方程 终止条件 翻译为代码 时
数据结构和算法-O(n2)-排序算法
前言 平均时间复杂度为O(n2)的经典排序算法有以下三个 冒泡排序 选择排序 插入排序 冒泡排序 实现 时间复杂度 最好:O(n) 最坏:O(n2) 平均:O(n2) 空间复杂度 原地排序:O(1)
数据结构和算法-经典排序算法总览
定义 排序算法是作用在数组之上的方法,目的是将乱序的数据按照升序或者逆序的规则排列好。 如何评价一个排序算法 评价排序算法,主要从三个维度进行分析 时间复杂度:包括最好、最坏、平均时间复杂度 空间复杂
数据结构和算法-递归
定义 递归是一种广泛应用的算法,或者说,一种编程技巧。 当一个问题满足以下三个条件时,即可通过递归解决 一个问题的解可以拆分为几个子问题的解 除了数据规模,子问题的求解思路完全一致 存在递归终止条件
数据结构和算法-队列
定义 队列是一种操作受限的线性表结构,只能在一端插入,在另一端删除元素,故有先入先出特征,可以用链表或者数组实现。 算法 队列包含的操作有两个,时间和空间复杂度应该为O(1) 入队列 出队列 应用场景
数据结构和算法-栈
定义 栈是一种操作受限的线性表结构,只能在一端插入删除元素,故有先入后出,后入先出的特征,可以用链表或者数组实现。 算法 栈的操作就两个 入栈 出栈 时间和空间复杂度都应该为O(1) 应用场景 任何有
数据结构和算法-数组和链表
抽象源头 从计算机内存这个层次来看,用户申请的内存空间只有两种划分规则:连续和非连续,这恰恰对应了数组和链表的内存申请特性,这不是一种巧合,事实是数组和链表是计算机内存最基本的抽象。 其他的数据结构,
数据结构和算法-链表
定义 链表是一种线性表结构,它使用由指正串联的非连续的内存空间,存储相同类型的数据。 算法 随机访问 不支持 查找节点 时间复杂度:O(n) 时间复杂度:O(1) 删除节点 前提:通过查找算法已经拿到
数据结构和算法-数组
定义 数组是一种线性表数据结构,它使用连续的内存空间,存储相同类型的数据。 算法 随机访问 设随机访问下标为i,数组的首地址为base,数组每个数据单元占用字节为k,那么有 时间复杂度:O(1) 空间
数据结构和算法-学前问题
为什么学习数据结构和算法? 数据结构和算法能帮助程序员建立复杂度意识,写出高质量的代码。换句话说,这是一名合格程序员的基本功,体现着个人的编程能力。 如何学习数据结构和算法? 学习数据结构和算法的过程