0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法和数据结构基础知识分享(中)

jf_78858299 来源:阿里开发者 作者:复醉 2023-04-06 16:48 次阅读

2)哈希表的基本操作?

写入:O(1)、读取:O(1)、扩容O(n)。

3)什么是哈希函数?

哈希表本质上是一个数组,只是数组只能根据下标,像a[0] a[1] a[2] a[3] 这样来访问,而哈希表的key则是以字符串类型为主的。

通过哈希函数,我们可以把字符串或其他类型的key,转化成数组的下标index。

如给出一个长度为8的数组,则:

当key=001121时,

index = HashCode ("001121") % Array.length = 7

当key=this时,

index = HashCode ("this") % Array.length = 6

图片

4)什么是哈希冲突?

不同的key通过哈希函数获得的下标有可能是相同的,例如002936这个key对应的数组下标是2,002947对应的数组下标也是2,这种情况就是哈希冲突。

5)如何解决哈希冲突?

开放寻址法:例子Threadlocal。

6 树

1)什么是树?

树(tree)是n(n≥0)个节点的有限集。

当n=0时,称为空树。在任意一个非空树中,有如下特点:

  • 有且仅有一个特定的称为根的节点。
  • 当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个树,并称为根的子树。

2)树的遍历?

(1)深度优先

前序:根节点、左子树、右子树。

图片

中序:左子树、根节点、右子树。

图片

后序:左子树、右子树、根节点。

图片

实现方式:递归或栈。

(2)广度优先

层序:一层一层遍历。

图片

实现方式:队列。

7 二叉树

1)什么是二叉树?

二叉树(binary tree)是树的一种特殊形式。二叉,顾名思义,这种树的每个节点最多有2个孩子节点。注意,这里是最多有2个,也可能只有1个,或者没有孩子节点。

2)什么是满二叉树?

一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树。

3)什么是完全二叉树?

对一个有n个节点的二叉树,按层级顺序编号,则所有节点的编号为从1到n。如果这个树所有节点和同样深度的满二叉树的编号为从1到n的节点位置相同,则这个二叉树为完全二叉树。

图片

8 二叉查找树

1)什么是二叉查找树?

二叉查找树在二叉树的基础上增加了以下几个条件:

  • 如果左子树不为空,则左子树上所有节点的值均小于根节点的值。
  • 如果右子树不为空,则右子树上所有节点的值均大于根节点的值。
  • 左、右子树也都是二叉查找树。

图片

2)二叉查找树的作用?

  • 查找==》二分查找。
  • 排序==》中序遍历。

3)二叉树的实现方式?

  • 链表。
  • 数组:对于稀疏二叉树来说,数组表示法是非常浪费空间的。

9 二叉堆

1)什么是二叉堆?

二叉堆是一种特殊的完全二叉树,它分为两个类型:最大堆和最小堆。

  • 最大堆的任何一个父节点的值,都大于或等于它左、右孩子节点的值。
  • 最小堆的任何一个父节点的值,都小于或等于它左、右孩子节点的值。

图片

2)二叉堆的基本操作?

(1)插入:插入最末,节点上浮。

图片

(2)删除:删除头节点,尾节点放到头部,再下沉。

图片

(3)构建二叉堆:二叉树==》二叉堆,所有非叶子节点依次下沉。

图片

3)二叉堆的实现方式?

数组:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据结构
    +关注

    关注

    3

    文章

    564

    浏览量

    39900
  • 排序算法
    +关注

    关注

    0

    文章

    50

    浏览量

    10021
  • 存储结构
    +关注

    关注

    0

    文章

    21

    浏览量

    9678
收藏 人收藏

    评论

    相关推荐

    数据结构算法分析(Java版)(pdf)

    数据结构算法分析(Java版)(pdf)http://www.ibeifeng.com/read.php?tid=4812&u=73481【中文】Java数据结构算法中文第
    发表于 12-20 21:22

    数据结构算法分析

    数据结构算法分析
    发表于 06-05 10:46

    【下载】《嵌入式系统软件设计数据结构

    教学参考书。内容简介  根据嵌入式系统软件设计需要的“数据结构知识编写而成。书中基本内容有:常用线性数据结构在嵌入式系统的实现和相关算法
    发表于 11-30 17:46

    请问学习stm32以及ucos ii ucgui需要学习数据结构算法之类的知识吗?

    学习stm32以及ucos ii ucgui是否需要学习数据结构算法之类的知识
    发表于 06-09 23:22

    数据结构的几个重要知识

    ,也就掌握好了数据处理的算法,良好的数据结构对于软件系统的执行效率、数据存储效率都非常重要。栈的模型以上简单了解了什么是数据结构
    发表于 02-27 15:01

    C语言与数据结构

    目录个人介绍笔试单选题C语言数据结构计算机与操作系统网络通信填空题C语言与数据结构网络通信问答题嵌入式基础知识C语言与数据结构C编程一面二面功能快捷键合理的创建标题,有助于目录的生成如
    发表于 08-06 07:10

    数据结构算法核心知识点总结概述

    数据结构算法核心知识点总结概述最近有看一些大佬的专栏,受益匪浅。深刻的觉察到我们要想成为一个伟大的程序员,或者说小一点,成为一个厉害的程序员,基础知识是核心竞争力也是我们不断向上提升
    发表于 12-21 08:00

    C#数据结构算法分析_ 魏宝刚

    数据结构算法分析》描述了各种类型的数据结构,包括线性表、树、堆、图,以及查找、排序等算法。自始至终将数据结构的基本原理与
    发表于 12-15 16:46 0次下载
    C#<b class='flag-5'>数据结构</b>和<b class='flag-5'>算法</b>分析_ 魏宝刚

    数据结构算法

    全国C语言考试公共基础知识点——数据结构算法,该资料包含了有关数据结构算法的全部知识点。
    发表于 03-30 14:27 0次下载

    大牛分享平时如何学习数据结构算法

    数据结构算法的地位对于一个程序员来说不言而喻。今天这篇文章不是来劝你们学习数据结构算法的,也不是来和你们说数据结构
    的头像 发表于 11-02 11:25 2778次阅读

    数据结构算法知识点有哪些?

    数据结构算法知识点有哪些?
    的头像 发表于 01-10 15:22 7930次阅读

    JavaScrit数据结构算法(第2版)

    JavaScrit数据结构算法(第2版)教材下载。
    发表于 06-01 15:35 0次下载

    程序设计和数据结构(嵌入式)

    编程的基础-算法和数据结构入门资料免费下载。
    发表于 04-18 09:35 1次下载

    算法和数据结构基础知识分享(上)

    有哪些常见的数据结构?基本操作是什么?常见的排序算法是如何实现的?各有什么优缺点?本文简要分享算法基础、常见的数据结构以及排序算法
    的头像 发表于 04-06 16:48 583次阅读
    <b class='flag-5'>算法</b><b class='flag-5'>和数据结构</b><b class='flag-5'>基础知识</b>分享(上)

    算法和数据结构基础知识分享(下)

    有哪些常见的数据结构?基本操作是什么?常见的排序算法是如何实现的?各有什么优缺点?本文简要分享算法基础、常见的数据结构以及排序算法
    的头像 发表于 04-06 16:48 553次阅读
    <b class='flag-5'>算法</b><b class='flag-5'>和数据结构</b><b class='flag-5'>基础知识</b>分享(下)