数据结构和算法的关系

数据结构和算法的关系

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

数据结构

概念

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

类别

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

存储方法

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

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

算法

解决问题的步骤

总结

程序 = 数据结构 + 算法

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

数据结构与算法关系

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

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

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

数据结构特点

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

算法的特征

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

数据结构应用

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

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

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

存储结构

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

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

算法目的

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

数据结构的优劣

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

数据结构和算法的关系

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

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

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

(0)

大家都在看

  • VMware 和 Linux 的安装

    常见的虚拟机软件有 VMware Workstation(简称 VMware)、VirtualBox、Microsoft Virtual PC 等,本文以 VMware 为例来讲解…

    Linux 2023年5月27日
    078
  • 015 Linux 标准输入输出、重定向、管道和后台启动进程命令

    1 三种标准输入输出 2 什么是重定向?如何重定向? (1)什么是重定向? (2)如何重定向? 3 管道符以及和它容易混淆的一些符号使用 (1)管道符 | (2)&和&am…

    Linux 2023年5月27日
    087
  • TCP/UDP 编程模型

    TCP编程模型 server创建socket套接字 socket套接字–可以理解为文件描述符(file descriptor),UNIX把网络看成文件 /** * @p…

    Linux 2023年6月6日
    096
  • ShardingSphere-proxy-5.0.0容量范围分片的实现(五)

    一、修改配置文件config-sharding.yaml,并重启服务 # Licensed to the Apache Software Foundation (ASF) unde…

    Linux 2023年6月14日
    0129
  • 玩转SpringBoot之捣鼓 Redis

    我们都知道,把首页数据放到Redis里,能够加快首页数据的访问速度。但是我们要如何准确又快速的将 Redis 整合到自己的 SpringBoot2.x 项目中呢?今天阿淼就带大家爬…

    Linux 2023年5月28日
    0101
  • jdk 安装(图形界面版)

    在这里为大家提供jdk8的Linux版安装包,下载链接: 提前将jdk安装包放入U盘中,插入U盘,VMware会自动识别,选择将U盘接入虚拟机 打开终端 为避免权限不足,开始之前确…

    Linux 2023年6月8日
    097
  • PostgreSQL实战技能全解

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/Willoneday/p/16572876.htmlAu…

    Linux 2023年6月7日
    076
  • gcc/g++与动静库以及gdb

    gcc/g++ 程序转换为二进制 总共需要经过4个大步骤:1.预处理,2.编译,3.汇编,4.链接。 想要更深刻的了解它,可以通过Linux去深刻的了解他们。 先创建.C文件 并且…

    Linux 2023年6月13日
    074
  • Linux——基础命令用法(下)

    一、linux用户 1、什么是用户 用户用于运行某些进程并拥有某些文件或目录。 [En] Users are used to run certain processes and o…

    Linux 2023年5月27日
    087
  • shell生成指定长度的随机数

    生成指定长度是随机数 8位纯数字的随机数 tr -cd ‘0-9’ 使用/dev/urandom而不是/dev/random是因为后者比较慢。 Original: https://…

    Linux 2023年5月28日
    094
  • vue3中iview框架初始值赋值问题

    问题:今天有个小伙伴说我们前端有个页面异常奇怪,没有显示数据。 开发小伙伴进行查询之后(非专业前端),明明进行了绑定,页面死活无法渲染,归属于灵异事件了,对于这种灵异事件,我总会想…

    Linux 2023年6月7日
    076
  • 类成员变量的初始化

    1-1 类成员变量初始化的分类 类成员变量的初始化可简单分为两类:非静态成员变量的初始化(以下简称”普通初始化”)和静态成员变量的初始化(”静态…

    Linux 2023年6月8日
    0101
  • 电脑常用快捷键大全>(收藏)

    在互联网飞速发展的时代,我们或多或少都会跟电脑打上交道,但是还有很多小伙伴对电脑还不太熟悉,并且不能够流畅的去操作电脑,那这个时候掌握一些基础简单的电脑 常用快捷键 的使用还是很有…

    Linux 2023年6月6日
    080
  • 【设计模式】Java设计模式-适配器模式

    【设计模式】Java设计模式 – 适配器模式 😄 不断学习才是王道🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆原创作品,更多关注我CSDN: 一…

    Linux 2023年6月6日
    0137
  • Web前端基础精品入门(HTML+CSS+JavaScript+JS)[爱前端]听课笔记2:导航条的制作——css学习仿作马蜂窝

    马蜂窝的首页是非常正能量,青春的网页,首页非常大气 logo在上一篇我们已经制作好,现在我们开始制作导航条 这个导航条字数不等,宽窄不一致,就是所有的li不一样宽,字多就宽,字少就…

    Linux 2023年6月14日
    064
  • 重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用

    欢迎关注公众号:bin的技术小屋,大家如果看到图片显示不了的话,可以查看公众号原文 大家好,我是bin,又到了每周我们见面的时刻了,我的公众号在1月10号那天发布了第一篇文章《从内…

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