印度大神harsha suryanarayana 数据结构学习笔记-第一节课 Introduction to data structures

数据结构是指存储和组织数据的一种方式。

用数据结构描述电视模型:

1、有开或关两种状态

2、可以接收信号

3、有视频和音频

从以下几个方面来学习数据结构:

1、数学/逻辑模型 或者称为抽象数据类型 ADT

2、实现

ADT拓展(可不看):

其中,抽象数据类型(Abstract Data Type,简称 ADT)是计算机科学中一个非常重要的概念,下面为你详细介绍:

定义

抽象数据类型是一种对数据的抽象描述,它将数据的逻辑特性和对这些数据所允许执行的操作封装在一起,而不考虑这些操作的具体实现细节。简单来说,它关注的是 “是什么” 和 “能做什么”,而不是 “怎么做”。

组成部分

  • 数据对象:定义了该数据类型所包含的数据元素集合。例如,在一个栈(Stack)的抽象数据类型中,数据对象就是一系列按顺序存储的元素。
  • 数据关系:描述了数据对象中各元素之间的逻辑关系。对于栈来说,数据关系就是后进先出(Last In First Out,LIFO),即最后进入栈的元素会最先被取出。
  • 基本操作:规定了可以对数据对象执行的操作。以栈为例,基本操作通常包括入栈(Push)、出栈(Pop)、查看栈顶元素(Peek)、判断栈是否为空(IsEmpty)等。

特点

  • 抽象性:抽象数据类型只关注数据的逻辑特性和操作的功能,而隐藏了具体的实现细节。使用者只需要知道如何使用这些操作,而不需要了解操作是如何实现的。这使得程序的设计和使用更加简单和方便。
  • 封装性:将数据和操作封装在一起,形成一个独立的整体。外部程序只能通过规定的操作来访问和修改数据,从而保证了数据的安全性和完整性。例如,在栈的抽象数据类型中,外部程序只能通过入栈和出栈操作来访问栈中的元素,而不能直接访问栈内部的数据结构。
  • 信息隐藏:隐藏了数据的具体表示和操作的实现细节,使得数据类型的实现可以独立于使用它的程序进行修改和优化。只要操作的功能和接口保持不变,对实现细节的修改不会影响到使用该数据类型的程序。

常见的数据结构: array    linked list   stack  queue tree graph 等

拓展

常见的数据结构包括线性结构、树形结构、图形结构等,以下是一些具体的数据结构介绍:

  • 线性结构
    • 数组:是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。数组的优点是可以通过下标快速访问元素,时间复杂度为 O(1)。缺点是插入和删除元素可能需要移动大量元素,时间复杂度通常为 O(n)。
    • 链表:由一系列节点组成,每个节点包含数据和指向下一个节点的引用。链表的插入和删除操作较为灵活,时间复杂度为 O(1),但访问元素需要从头开始遍历,时间复杂度为 O(n)。
    • :是一种后进先出(LIFO)的数据结构,只允许在一端进行插入和删除操作。常用于函数调用、表达式求值等场景。
    • 队列:是一种先进先出(FIFO)的数据结构,允许在一端插入元素,在另一端删除元素。常用于任务调度、消息队列等场景。
  • 树形结构
    • 二叉树:每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的遍历方式有前序遍历、中序遍历和后序遍历等,不同的遍历方式可以满足不同的需求。
    • 二叉搜索树:是一种特殊的二叉树,对于树中的每个节点,其左子树中的所有节点的值都小于该节点的值,其右子树中的所有节点的值都大于该节点的值。这种结构使得查找、插入和删除操作的平均时间复杂度为 O(logn)。
    • :是一种特殊的完全二叉树,分为大顶堆和小顶堆。大顶堆中每个节点的值都大于或等于其子节点的值,小顶堆中每个节点的值都小于或等于其子节点的值。堆常用于优先队列的实现。
  • 图形结构
    • :由顶点(节点)和边组成,边可以带权或不带权。图可以用来表示各种复杂的关系,如社交网络、交通网络等。图的遍历算法有深度优先搜索(DFS)和广度优先搜索(BFS)等。
  • 其他数据结构
    • 哈希表:也称为散列表,通过哈希函数将键值映射到一个固定大小的数组中,以实现快速的查找、插入和删除操作。在理想情况下,哈希表的操作时间复杂度可以达到 O(1)。
    • 跳表:是一种基于链表的数据结构,通过在链表中增加多级索引来提高查找效率。跳表的查找、插入和删除操作的时间复杂度均为 O(logn),并且实现相对简单,在一些场景中可以替代平衡树。

bilibili 视频地址:印度大神harsha suryanarayana 数据结构(英文字幕720p) 第1课_Introduction to data structures_哔哩哔哩_bilibili 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值