首页 > 其他分享 >王道数据结构第一章个人向笔记

王道数据结构第一章个人向笔记

时间:2024-04-28 10:34:07浏览次数:13  
标签:1.1 1.2 元素 第一章 王道 算法 数据结构 数据

目录

1.1.0 导读

数据结构在学什么?

  • 如何用程序代码把显示世界的问题信息画
  • 如何用计算机高效地处理这些信息从而创造价值

1.1.1 绪论

  • 数据:是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料
  • 数据元素是数据的基本单位,通常作为一个整体进行考虑和处理
  • 一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位
  • 数据对象是具有相同性质的数据元素的集合,是数据的一个子集
  • 数据结构是相互之间存在一种或多种特定关系的数据元素的集合
    image

1.1.2 数据结构的三要素

image

逻辑结构

  1. 集合
    各个元素同属一个集合,别无其他关系
  2. 线性结构
    数据元素之间是一对一的关系,出了第一个元素,所有元素都有唯一的前驱,除了最后一个元素,所有元素都有唯一后继
  3. 树形结构
    数据元素之间是一对多的关系
  4. 图结构
    数据元素之间是多对多的关系

数据的运算

针对某种逻辑结构,结合实际需求,定义基本运算

物理结构(存储结构)

数据的物理结构(存储结构):如何用计算机表示数据元素的逻辑关系

image
数据类型是一个值的集合和定义在此集合上的一组操作的总称
抽象数据类型(ADT)是抽象数据组织及与之相关的操作

1.2.1 算法的基本概念

程序=数据结构+算法

  • 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作

算法的特性

  1. 有穷性:一个算法必须总在执行有穷步之后结束
  2. 确定性:算法中的每条指令必须有确切的含义。对于相同的输入只能得出相同的输出
  3. 可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
  4. 输入
  5. 输出

1.2.2 时间复杂度

事前预估算法时间开销\(T(n)\)与问题规模n的关系
可以只考虑阶数高的部分
大O表示法:
大O表示同阶,同等数量级,当\(n->无穷\)二者之比为常数
image
image
常对幂指阶

  • 结论1:顺序执行的代码只会影响常数项,可以忽略
  • 结论2:只需挑循环中的一个基本操作分析它的执行次数与n的关系即可
  • 结论3:如果有多层循环只需要考虑最深层循环即可

image

1.2.3 空间复杂度

算法原地工作--算法所需内存空间为常量
只需关注存储空间的大小和问题规模相关的变量
函数递归调用会带来内存开销
空间复杂度=递归调用的深度(一般来说,每层递归空间都是常数)
image

标签:1.1,1.2,元素,第一章,王道,算法,数据结构,数据
From: https://www.cnblogs.com/cxy8/p/18162995

相关文章

  • 数据结构与算法学习(1)——BFS(广度优先搜索)
    BFS基础BFS会从根节点开始搜索,在每一个路口面临分叉的时候,先把每个岔路记录下来,然后再去一个一个的往前走一步。节点进行广度优先搜索的顺序题目PS:下列题目均来自leetcode中灵神题单1311.获取你好友已观看的视频......
  • 数据结构_链表_双向循环链表的初始化、插入、删除、修改、查询打印(基于C语言实现)
    版本:2024年4月26日V1.0发布于博客园/***@filename:DoubleLinkedList.c*@brief:实现双向循环链表的相关功能*@author:[email protected]*@date:2024/04/26*@version:1.0*@note:*CopyRight(c)2023-2024RISE_AND......
  • 数据结构——链式栈
    二、链式栈构造链式栈//链式栈的有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造单链式栈的结点typedefstructLinkedStack{DataType_tdata;//结点的数据域structLinkedStack*next;//结点的的指针域}LinStack_t......
  • 数据结构(笔试题-栈(入栈出栈)
    笔试题:实现//利用栈s1和s2实现队列,栈的思想是“后进先出”,队列的思想是“先进先出”,可以选择把栈s1作为入队缓存,把栈s2作为出队缓存//入队boolenQueue(s1,s2,intx){ inttemp;//用于存储出栈的元素的值 //1.判断栈s1是否已满,此时分为两种情况(满了or未满) if(s......
  • 数据结构—单链表队列头删尾插
    单链表队列的头删尾插/*************************************************/***@filename: 单链表队列的头删尾插.md*@brief实现对单链表队列的头删尾插*@[email protected]*@date2024/04/26*@version1.0:在下坂本,有何贵干*@property:no......
  • C语言数据结构:链式队列的创建及其出入队操作
    /**********************************************************************************************************该程序实现链式队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以链式队列中元素*的数据类型为DataType_t,用户可以根据实际情况修改......
  • 数据结构-链表-2
    本函数功能为将查找单链表中的倒数第k个结点将其data输出<!--RevCount.c文件(查找单链表中的倒数第k个结点将其data输出)的实现-->/*******************************************************************************funcname:LinList_RevCount*function:......
  • 【Network Automation系列】-- 第一章
    引言:本系列是根据《MasteringPythonNetworkingThirdEdition》翻译整理出来的,原著作者:EricChou,大家可以关注一下。随着网络工程领域的快速变化,我们无疑也经历了类似的变化。随着软件开发越来越多地集成到网络的各个方面、传统的命令行接口和垂直集成中,网络堆栈方法不再是管......
  • 数据结构算法题
    数据结构算法题通过键盘输入一个包括'('和')'的字符串string,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件:A.左括号必须用相同类型的右括号闭合。B.左括号必须以正确的顺序闭合。C.每个右括号都有一个对应的相同类型的左括号。思......
  • C语言数据结构:顺序栈的创建、出入栈,以及使用顺序栈实现十进制转十六进制
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改......