数据结构和算法的关系

数据结构和算法的关系

针对Python数据结构与算法(裘宗燕版)中的第一章绪论最后的问题

数据结构

概念

数据与数据之间的结构关系(数组、队列、树、图等结构)

类别

分为 逻辑数据结构存储数据结构两种

存储方法

  1. 顺序存储方法(顺序存储结构)
  2. 链接存储方法(链式存储结构)

同一种逻辑结构可采用不同的存储方法(以上两种之一或组合),这主要考虑的是运算方便及算法的时空要求。

算法

解决问题的步骤

总结

程序 = 数据结构 + 算法

数据是程序的中心。数据结构和算法两个概念间的逻辑关系贯穿了整个程序世界,首先二者表现为不可分割的关系。没有数据间的有机关系,程序根本无法设计。

数据结构与算法关系

数据结构是底层,算法高层。数据结构为算法提供服务。算法围绕数据结构操作。

解决问题(算法)需要选择正确的数据结构

例如:算法中经常需要对数据进行增加和删除用链表数据结构效率高,数组数据结构因为增加和删除需要移动数字每个元素所有效率低。

数据结构特点

每种数据结构都具有自己的特点。例如:队列:先进先出。栈:先进后出。

算法的特征

算法具有五个基本特征:输入、输出、有穷性、确定性和可行性。

数据结构应用

数据结构往往同高效的检索算法、索引技术、排序算法有关

数据结构(逻辑数据结构)通过计算机语言来实现数据结构(存储数据结构)

例如:树型数据结构:通过计算机语言中的数组(节点)和指针(指向父节点)来实现。

存储结构

逻辑数据结构的实现。存储结构通过计算机语言实现。

例如:堆数据结构,堆是一棵完全二叉树,所以适宜采用顺序存储结构(顺序存储:数组),这样能够充分利用存储空间。

算法目的

算法是为数据结构服务。例如:数据结构通常伴随有查找算法、排序算法等

数据结构的优劣

一种数据结构的优劣是在实现其各种运算的算法中体现的。

数据结构和算法的关系

Original: https://www.cnblogs.com/zzs0626/p/16286339.html
Author: 顺溜_7
Title: 数据结构和算法的关系

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582438/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 关于如何在Idea下进行多子项目及引用内部子项目情况下打包项目的方法

    近期在开发Java的时候遇到了如下的打包上的问题 需要将一个工程下面的子工程分别打包 有的子工程还包含了另一个子工程 在这种情况下打包会出现找不到子模块的情况。 JDK:1.8 开…

    Linux 2023年6月14日
    095
  • 杨辉三角的变形—牛客网

    杨辉三角的变形_牛客题霸_牛客网 (nowcoder.com) #include using namespace std; int main() { //这个树的偶数规律为 -1 …

    Linux 2023年6月13日
    0122
  • LeetCode-26. 删除有序数组中的重复项

    题目来源 题目详情 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应…

    Linux 2023年6月7日
    091
  • Python闭包

    前言 学习Python的单例实现的时候,遇到了下面这样的代码。很不理解为什么局部变量 _instance没有重新初始化。后来看到有人说这是闭包,于是又去了解了下 闭包。没想到闭包竟…

    Linux 2023年6月7日
    095
  • 对象缓存服务的思考和实现

    写在前面 目前在很多业务中,存储都大量的依赖了云存储,比如阿里云的 oss、华为云的 obs 等。但是如果有大量的上传/下载任务,云存储上的网络 I/0 就变成了一个很大的瓶颈。 …

    Linux 2023年6月14日
    091
  • Docker存储卷

    Docker存储卷 1、COW机制 Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。 如果运行中的容器修改了现有的一个已…

    Linux 2023年6月7日
    081
  • shell 同时执行多任务下载视频

    本文为博主原创,转载请注明出处: shell 脚本不支持多线程,但我们需要用shell 脚本同时跑多个任务时怎么让这些任务并发同时进行,可以采用在每个任务 后面 添加一个 &amp…

    Linux 2023年6月14日
    0102
  • SpringSecurity

    SpringSecurity 11.1 SpringSecurity简介 Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spr…

    Linux 2023年6月14日
    094
  • IOC Unity

    控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Depende…

    Linux 2023年6月13日
    097
  • 【证券从业】金融基础知识笔记与思维导图

    注1:金融基础知识一本书已整理成完整的思维导图和笔记,需要分享请留言 注2:接下来整理金融法律法规,待整理成完整的笔记后再合并 posted @2022-06-29 23:48 陈…

    Linux 2023年6月13日
    0118
  • fastdfs集群部署

    fastdfs集群部署 参考链接:https://www.cnblogs.com/penngke/p/15396701.html部署架构如下: 部署规划 2台主机,数据存储节点共1…

    Linux 2023年6月8日
    0100
  • 那些shellcode免杀总结

    首发先知: https://xz.aliyun.com/t/7170 自己还是想把一些shellcode免杀的技巧通过白话文、傻瓜式的文章把技巧讲清楚。希望更多和我一样web狗也能…

    Linux 2023年5月28日
    079
  • 每天一个 HTTP 状态码 前言

    HTTP 状态码由 3 位阿拉伯数字构成,其中第一位用于定义 HTTP 响应的类型… 前前言 在重新开始写博文(其实大多也就最多算是日常笔记小结)之际,就想着从短小精悍…

    Linux 2023年6月7日
    090
  • Linux目录操作cp、mv与rmLinux查找文件(find、which)

    cp(复制) cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为 *cp [选项]… 源文件… 文件夹 多个源文件只…

    Linux 2023年6月6日
    081
  • Linux基线加固

    bash;gutter:true; 1、修改vsftp回显信息 (1)检查办法 修改vsftp回显信息: 需在安装VSFTP的情况下检查,未安装可忽略或禁用该项。 查看ftpd_b…

    Linux 2023年6月13日
    084
  • short, int, long, long long各个类型的范围

    类型名称 字节数 取值范围 signed char 1 -2^7 ~ 2^7-1 -128~+127 short int 2 -2^14 ~ 2^14-1 -32768~+3276…

    Linux 2023年6月8日
    0106
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球