数据结构
文章平均质量分 93
针对笔试面试的数据结构
WhiteShirtI
不管你现在是什么状态 你要记住 生活中的目标就是快乐自由 每天开心
展开
-
数据结构 5分钟带你搞定哈希表(建议收藏)!!!
对比之前博客讨论的二叉排序树 二叉平衡树 红黑树,它们的查找都是先从根节点进行查找,从节点取出数据或索引与查找值进行比较。那么,有没有一种函数H,根据这个函数和查找关键字key,可以直接确定查找值所在位置,而不需要一个个比较。这样就预先知道key所在的位置,直接找到数据,提升效率散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做哈希函数,存原创 2021-05-26 16:39:38 · 34162 阅读 · 31 评论 -
数据结构 红黑树(RBTree)的原理与实现
学习红黑树之前你应该保证你学过AVL树,也就是平衡二叉搜索树数据结构 AVL树AVL树是一棵高度平衡的二叉搜索树,其要求每个结点的高度差不能大于1,这样子就保证了其查询的时间复杂度为log2(N),不会出现单支树而导致时间复杂度退化到线性时间。但是AVL树的插入和删除性能非常低下,只要稍微不平衡,都需要进行旋转操作,实现起来也相对困难。所以如果当你需要查询效率高且有序时你可以有优先选择AVL树,但是如果你所需的数据结构是频繁的插入与删除,且需要高效查询且有序时,你可以优先考虑红黑树(RBTree)红黑原创 2021-05-20 17:15:35 · 967 阅读 · 13 评论 -
数据结构 AVL树
AVL树二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树平衡因子某结点的右子树与左子树的高度(深度)差即为该结点的平衡因子。平衡二叉树上所有结点的平衡因子只可能是 -1,0 或 1实现结点原创 2021-05-17 13:58:40 · 689 阅读 · 0 评论 -
数据结构 二叉搜索树BST的实现与应用
概念二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树:1、若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;2、若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;3、它的左、右子树也分别为二叉排序树。作用:二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作原创 2021-05-11 09:07:09 · 418 阅读 · 0 评论 -
数据结构 快速排序的三种实现 (hoare版本 挖坑法 前后指针版本)与非递归实现
快速排序hoare版本挖坑法前后指针版本快速排序:快速排序算法通过多次比较和交换来实现排序基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。适用情况:数据量大,要求的效率也高,应用广时间复杂度和稳定性:O(nlogn)~O(n2) 不稳定快排有三种实现方法,且都比较重要。将区间按照基准值划分为左右两半部分的常见方式有:1. hoare版本2. 挖坑法3. 前后指针版本hoare版本原创 2021-01-20 19:28:25 · 624 阅读 · 0 评论 -
数据结构 10分钟让你掌握经典排序(二)
数据结构 经典排序算法总结(二)交换排序冒泡排序快速排序(重要)交换排序冒泡排序冒泡排序:是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。思想:对所有相邻记录的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到有序化;适用情况:数据量少且不考虑效率时间复杂度和稳定性:原创 2021-01-20 17:43:42 · 295 阅读 · 0 评论 -
数据结构 10分钟让你掌握经典排序(一)
经典排序算法是数据结构体系中最重要的内容之一,这一块必须要非常熟练的掌握,应该做到可以立马写出每个排序的代码,有多种实现方法的必须多种都能很快写出来,当然对各个排序的性能的了解也是基础且重要的。我们先对排序这一块进行一个整体的把握。我们先对整个名词解释:排序:排序是将一批无序的记录(数据)重新排列成按关键字有序的记录序列的过程。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,原创 2021-01-18 16:30:25 · 397 阅读 · 0 评论 -
数据结构 二叉树面试笔试编程题集
.原创 2021-01-17 22:11:06 · 609 阅读 · 0 评论 -
数据结构 堆
堆堆的概念堆的性质堆的操作1、堆向下调整算法2、堆的创建3、堆的插入4、堆的删除5、堆排序堆的代码实现堆的概念如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足有子树的根节点是最大或者最小,称为小堆(或大堆)根节点最小的或者最大的称为堆顶堆的性质性质1:堆中某个节点的值总是不大于或不小于其父节点的值性质2:堆总是一棵完全二叉树堆的操作1、堆向下调整算法现在我们给出一个数组,逻辑上看做一颗完原创 2021-01-02 17:48:40 · 408 阅读 · 0 评论 -
数据结构 树与二叉树
树和二叉树树树的概念树的结构树结构的基本术语树的存储结构树树形结构是一类重要的非线性数据结构。其中以树和二叉树最为常用,直观来看,树是以分支关系定义的层次结构。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可以用树来形象表示。树在计算机领域也得到广泛应用,如在编译程序中,可用树来表示源程序的语法结构。又如在数据库系统中,树形结构也是信息的重要组织形式之一。树的概念树(Tree)是n(n>=0)个结点的有限集合。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root原创 2020-12-30 19:28:07 · 666 阅读 · 0 评论 -
数据结构 栈和队列
栈和队列栈栈的结构栈的操作栈操作的接口栈的操作接口实现队列队列的结构队列的操作队列的操作接口队列的操作接口实现笔试面试总结栈栈又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则原创 2020-12-21 16:05:18 · 439 阅读 · 1 评论 -
数据结构 链表
链表链表链表结构各种链表的优缺点链表的操作笔试面试总结链表说到链表,我们可以先回顾一下数组。数组,所有元素都连续的存储于一段内存中,且每个元素占用的内存大小相同。这使得数组具备了通过下标快速访问数据的能力。但连续存储的缺点也很明显,增加容量,增删元素的成本很高,时间复杂度均为 O(n)。增加数组容量需要先申请一块新的内存,然后复制原有的元素。如果需要的话,可能还要删除原先的内存。删除元素时需要移动被删除元素之后的所有元素以保证所有元素是连续的。增加元素时需要移动指定位置及之后的所有元素,然后将新增元素插原创 2020-12-19 16:13:45 · 636 阅读 · 3 评论 -
数据结构 顺序表
顺序表线性表顺序表概念顺序表和链表优点和缺点顺序表的操作笔试面试总结线性表线性表示n个具有相同特性的数据元素的有限序列,线性表是一种在实际中广泛使用的数据结构,常见的线性表有:顺序表,链表,栈,队列,字符串等等。线性表在逻辑上是线性结构的,也就是说是连续的一条直线。但在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表概念顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元一次存储线性表中的各个元素、使得线性表中的逻辑结原创 2020-12-18 20:30:03 · 1099 阅读 · 3 评论