精华内容
下载资源
问答
  • 常见的数据结构

    2017-07-12 15:31:48
    数组 在程序设计中,为了处理方便, 把具有相同...因此按数组元素类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 栈 是只能在某一端插入和删除特殊线性表。它按照先进后出

    数组

    在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

    是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

    队列
    一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。

    链表
    是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

    是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
    (1)有且仅有一个结点 K0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。  (2)除K0外,K中的每个结点,对于关系N来说有且仅有一个前驱。
    (3)K中各结点,对关系N来说可以有m个后继(m>=0)。

    图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。

    在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。

    散列表
    若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表
    展开全文
  • ​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如...常见的数据类型又分为:数字、字符串、元组、列表、字典、集合。变数据类型列表、字典、集合 不哈希不变数据类型元组、数字、字符串...

    ​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。线性数据结构分类:栈(stack)--先进后出、 队列(queue)-先进先出、双端队列(deque)、链表(LinkedList)。

    常见的数据类型又分为:数字、字符串、元组、列表、字典、集合。

    可变数据类型

    列表、字典、集合 不可哈希

    不可变数据类型

    元组、数字、字符串 可哈希

    可哈希对象是对象拥有__hash__(self)内置函数的对象。对于可哈希的对象执行这个函数将会返回一个整数。

    可哈希对象判断相等的唯一条件就是两者 的哈希值相等。下面通过一个例子来说明:

    tuple_a = (1, 2, 3) # 元组a

    dict_b = {"a": 1, "b": 2} # 字典b

    dict_c = {"b": 2, "a": 1} # 字典c

    print(tuple_a.__hash__)

    print(dict_b.__hash__)

    print(id(str(sorted(dict_b))))

    print(id(str(sorted(dict_c))))

    print(hash(str(sorted(dict_b))))

    print(hash(str(sorted(dict_c))))

    >>>

    >>> None

    >>> 2704397351728

    >>> 2704397351728

    >>> -589638267386482414

    >>> -589638267386482414

    我们可以输出结果中元组返回了一个对象的'__hash__'method,而字典返回的结果None;字典是不能hash的,

    但是我们可以将字典转成字符串再进行hash,sorted是将字典进行排序,

    返回的结果显示两者转成字符串后的id跟hash值都是一样的,间接的说明了字典b跟字典c也是相等的

    (补充:sorted:适用于任何可迭代容器)

    哈希有啥作用?

    它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。Python 中基于hash的2个数据类型是dict and set , 之前说dict查询速度快,为何快? 说set天生去重,怎么做到的?其实都是利用了hash的特性,我们下面来剖析dict 为何查询速度超快,且不受dict大小影响 ?

    解析:假设我要存14亿人的基本信息

    data = {

    "张三":[23742364782642342323234,28,"山东济南"],

    "李四":[12124234232311214458271,25,"北京昌平"],

    "王五":[23030293483727384383929,33,"山东济南"],

    "赵六":[42302033030302482634674,28,"河北保定"],

    ... ...

    }

    dict 的每个key 都要先经过hash生成一段固定长度的hash值,假设生成的hash值如下dict会把这些数字按大小排序好放在一个列表里kd = [53, 67, 81, 99]

    当我们想查找"赵六"的信息时, 会把“赵六”先hash, 得到99这个值,然后拿这个值去到kd列表里找,想象这个列表有14亿个值 ,如何快速找到99? 二分法就行 ,只要找到了99的位置,就可以定位到赵六对应的value的值了。 通过2分法查找,每次数据量都会少一半,这样查找最多31次(2**31=2147483648)就能从20亿信息里找到这个人的信息。当然 dict 真实的查找算法比这个还要复杂些, 我只是通过这个例子让大家理解下为何基于hash的数据类型查找速度会快很多。

    set去重是因为每存一个值到set里时, 都要先经过hash,然后通过得出的这个hash值算出应该存在set里的哪个位置,存的时候会先检查那个位置上有没有值 ,有的话就对比是否相等,如果相等,则不再存储此值。 如果不相等(即为空),则把新值存在这。

    展开全文
  • ​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如字典)以及集合(set)... 常见的数据类型又分为:数字、字符串、元组、列表、字典、集合。变数据类型 列表、字典、集合 不哈希 不...

    ca6d860cfb2e0285fd165297b7d20506.png

    ​ Python中常见的数据结构可以统称为容器。序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。线性数据结构分类:栈(stack)--先进后出、 队列(queue)-先进先出、双端队列(deque)、链表(LinkedList)。

    常见的数据类型又分为:数字、字符串、元组、列表、字典、集合。

    可变数据类型

        列表、字典、集合         不可哈希
    不可变数据类型
        元组、数字、字符串         可哈希
    可哈希对象是对象拥有__hash__(self)内置函数的对象。对于可哈希的对象执行这个函数将会返回一个整数。
    可哈希对象判断相等的唯一条件就是两者 的哈希值相等。下面通过一个例子来说明:
    tuple_a = (1, 2, 3)    # 元组a
    dict_b = {"a": 1, "b": 2}    # 字典b
    dict_c = {"b": 2, "a": 1}    # 字典c
    print(tuple_a.__hash__)
    print(dict_b.__hash__)
    print(id(str(sorted(dict_b))))
    print(id(str(sorted(dict_c))))
    print(hash(str(sorted(dict_b))))
    print(hash(str(sorted(dict_c))))
    >>>    <method-wrapper '__hash__' of tuple object at 0x00000275A3DF6C18>
    
    >>>    None
    
    >>>    2704397351728
    >>>    2704397351728
    >>>    -589638267386482414
    >>>    -589638267386482414
    
    我们可以输出结果中元组返回了一个对象的'__hash__'method,而字典返回的结果None;字典是不能hash的,
    但是我们可以将字典转成字符串再进行hash,sorted是将字典进行排序,
    返回的结果显示两者转成字符串后的id跟hash值都是一样的,间接的说明了字典b跟字典c也是相等的
    (补充:sorted:适用于任何可迭代容器)
    

    哈希有啥作用?

    它是一个将大体量数据转化为很小数据的过程,甚至可以仅仅是一个数字,以便我们可以用在固定的时间复杂度下查询它,所以,哈希对高效的算法和数据结构很重要。Python 中基于hash的2个数据类型是dict and set , 之前说dict查询速度快,为何快? 说set天生去重,怎么做到的?其实都是利用了hash的特性,我们下面来剖析dict 为何查询速度超快,且不受dict大小影响 ?

    解析:假设我要存14亿人的基本信息

    data = {

    "张三":[23742364782642342323234,28,"山东济南"],

    "李四":[12124234232311214458271,25,"北京昌平"],

    "王五":[23030293483727384383929,33,"山东济南"],

    "赵六":[42302033030302482634674,28,"河北保定"],

    ... ...

    }

    dict 的每个key 都要先经过hash生成一段固定长度的hash值,假设生成的hash值如下dict会把这些数字按大小排序好放在一个列表里kd = [53, 67, 81, 99]

    当我们想查找"赵六"的信息时, 会把“赵六”先hash, 得到99这个值,然后拿这个值去到kd列表里找,想象这个列表有14亿个值 ,如何快速找到99? 二分法就行 ,只要找到了99的位置,就可以定位到赵六对应的value的值了。 通过2分法查找,每次数据量都会少一半,这样查找最多31次(2**31=2147483648)就能从20亿信息里找到这个人的信息。当然 dict 真实的查找算法比这个还要复杂些, 我只是通过这个例子让大家理解下为何基于hash的数据类型查找速度会快很多。

    set去重是因为每存一个值到set里时, 都要先经过hash,然后通过得出的这个hash值算出应该存在set里的哪个位置,存的时候会先检查那个位置上有没有值 ,有的话就对比是否相等,如果相等,则不再存储此值。 如果不相等(即为空),则把新值存在这。

    a36a1d18a2689104e191ef2fca2c85db.png
    展开全文
  • java中常见的数据结构

    2017-10-31 18:47:54
    ①数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型若干变量按有序...因此按数组元素类型不同,数组又可分为数值数组、字符数组、指 针数组、结构数组等各种类别。 ②栈 (Stack) 栈是只能在某一端

    ①数组 (Array)

    在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数
    据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组
    元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指
    针数组、结构数组等各种类别。
    ②栈 (Stack)
    栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后
    的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
    ③队列 (Queue)
    一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行
    插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
    ④链表 (Linked List)
    一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
    链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:
    一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
    ⑤树 (Tree)
    树是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:
    (1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)
    (2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。
    (3)K中各结点,对关系N来说可以有m个后继(m>=0)。
    ⑥堆 (Heap)
    计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指
    二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
    ⑦图 (Graph)
    图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,
    边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
    ⑧散列表 (Hash)
    若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称
    这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
    差不多我就知道这些了~
    展开全文
  • 常用数据结构 数组 (Array)  在程序设计中,为了处理方便, 把具有相同类型若干变量按有序形式组织起来。...因此按数组元素类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 栈
  • 数组可以说是最基本最常见的数据结构。数组一般用来存储相同类型的数据,通过数组名和下标进行数据的访问和更新。数组中元素的存储是按照先后顺序进行的,同时在内存中也是按照这个顺序进行连续存放。数组相邻元素...
  • 大体的分为 字符,2进制,数值,日期,其他类型 字符 char 是定长的。如char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。...所输入的数据字...
  • 九大常见数据结构

    2020-10-16 14:44:54
    数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊...数组可以说是最基本最常见的数据结构。数组
  • 随着技术发展,在统一I2S硬件接口下,出现了多种不同I2S数据格式,可分为左对齐(MSB)标准、右对齐(LSB)标准、I2S Philips 标准。对于所有数据格式和通信标准而言,始终会先发送最高有效位(MSB 优先)。发送端和...
  • 常见数据结构

    2012-12-11 13:51:00
    数组 (Array)  在程序设计中,为了处理方便, 把具有相同类型若干变量按有序...因此按数组元素类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。 栈 (Stack) 是只能在某一端插入...
  • java中常见数据结构

    2019-08-21 20:37:39
    java中常见数据结构 数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型若干变量按...因此按数组元素类型不同,数组又可分为数值数组、字符数组、指 针数组、结构数组等各种类别。 栈 (Stack) 栈是只能...
  • 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就
  • MySQL 5.7 - 常见数据类型

    多人点赞 2020-05-20 21:33:39
    本文关键字:MySQL、数据类型、文本类型、数字类型、日期类型...数据类型是数据库一个重要组成部分,在MySQL数据库中数据类型分为三大类:Text类型(文本类型)、Number类型(数字类型)、Date类型(日期类型)。
  • 齿轮箱的常见故障有齿轮损伤、轴承损坏、断轴和渗漏油、油温高等。...根据裂纹扩展情况和断齿原因,断齿可分为过载折断(包括冲击折断)、疲劳折断以及随机断裂等。过载折断总是由于作用在轮齿上应力超过其极限应...
  • 本文关键字:MySQL、数据类型、文本类型、数字类型、日期类型数据类型是数据库一个重要组成部分,在MySQL数据库中数据类型分为三大类:Text类型(文本类型)、Number类型(数字类型)、Date类型(日期类型)。...
  • 二叉树是非常基础的数据结构,二叉树的遍历是对二叉树的基本操作,今天对常见的二叉树遍历算法进行总结。一 、二叉树基本概念 二叉树基本知识 二、二叉树广度优先原则遍历 对于一颗二叉树,深度优先搜索(Depth ...
  • 按存储器使用类型可分为只读存储器(ROM)和随机存取存储器(RAM),两者功能有较大区别,因此在描述上也有所不同。存储基础部分分为ROM和RAM。https://www.wridy.com/常见存储器分类图示RAM:随机存取存储器是...
  • 数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊...数组可以说是最基本最常见的数据结构。...
  • JavaScript中的数据类型分为两种,一种是简单数据类型,包括Undefined、Null、Boolean、Number...Object类型是JavaScript中最常见的数据类型了。它表示一系列的属性和值的集合。 我们可以这样创建一个Object: var o...
  • 数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合...数组可以说是最基本最常见的数据结构。数组一般用
  • 常用的数据结构根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等,非线性结构包括树、图等。数据结构种类繁多,本文将通过图解的方式对常用的数据结构进行理论上的介绍和讲解,以...
  • 常用的数据结构根据数据访问的特点分为线性结构和非线性结构。线性结构包括常见的链表、栈、队列等,非线性结构包括树、图等。数据结构种类繁多,本文将通过图解的方式对常用的数据结构进行理论上的介绍和讲解,以...
  • 集合长度是。 数组中存储是同一类型元素,可以存储基本数据类型值。集合存储都是对象。而且对象类型可以不一致。在开发中一般当对象多时候,使用集合进行存储。 框架 集合按照其存储结构可以...
  • 传统单体应用,指就是系统,在微服务架构下,单体应用采用前后端分离模式,前端一般使用 Nginx,Ngnix 进程间采用主备模式,系统后端可以分为多个应用,每个应用有一组对等应用进程(也称为应用实例)提供...
  • 性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info...info命令输出的数据可分为10个类别,分别是: server clients memory persistence stats replication cpu commandstats...
  • 文章内容来自课件内容,个别细节做了简单补充!!! 树:数据对象 D:D是具有相同特性...1时,其余结点可分为m (m&gt;0)个互不相交有限集T1, T2, …, Tm, 其中每一棵子集本身又是一棵符合本定义树, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,537
精华内容 614
关键字:

常见的数据可分为