为什么研究数据结构与算法

本周带大家进入Python版数据结构与算法的学习。想必大家都听过“算法”一词,算法的学习对编程者来说是至关重要的。首先我们先了解一下为什么要研究数据结构与算法,掌握了数据结构与算法可以给我们带来哪些帮助。一起进入今天的学习吧(^_−)☆

01

  1. 为什么研究数据结构与算法?

为了清晰高效地表达算法;

为了控制问题和问题解决过程的复杂度,利用抽象来保持问题的整体感,而不会陷入到过多的细节中去。这要求对现实问题进行建模的时候,对算法所要处理数据也要保持与问题本身的一致性,不要有太多与问题无关的细节。

可以把问题分为以下几个模块:

这样可以让我们不必过早的陷入某个步骤的解决当中,也可以实现团队的分工合作从而提高解决问题的效率。

02

2.数据抽象:ADT抽象数据类型

相对于过程设计语言中基本数据类型,抽象数据类ADT(Abstract Data Type)是对数据进行处理的一种逻辑描述,并不涉及如何实现这些处理。

抽象数据类型ADT建立了一种对数据的封装(Encapsulation),封装技术将可能的处理实现细节隐蔽起来,能有效控制算法的复杂度。

03

3.数据结构是对ADT的具体实现

封装以后同一ADT可以采用不同的数据结构来实现;

采用程序设计语言的控制结构和基本数据类型来实现ADT所提供的逻辑接口。

逻辑层次就是它的接口和接口的功能描述;而具体怎么实现的,通过什么样的程序设计语言,如何去实现它,这里的“实现”就属于它的物理层次。

04

4.ADT实现:数据结构 Data Structure

ADT实际上就是希望能够对数据实现“逻辑”和“物理”层次上的一个分离。分离了以后,我们就可以定义复杂的数据模型去解决问题,而复杂的数据模型又不需要我们马上去考虑这个模型是怎么实现的,我们只需要复杂的数据模型可以解决复杂的问题就可以,接下来再去考虑问题的分解以及复杂数据类型的实现,这些具体是怎么实现的。

05

5.接口的两端:抽象与实现

“逻辑”和“物理”分离的关系就好比电动汽车与汽油车的关系。

底层动力能源是不同的,内部结构和实现方向是不一样的,但开车的操作接口(方向盘、油门、刹车、档位)基本都是相同的,这样司机不需要重新去考驾照,而车厂也可以继续改进实现技术。

逻辑层面上保持稳定,而物理层面上却可以持续的改进。可以不断提高改进“实现”层面。

对抽象数据类型可以有多种实现方案,独立于实现的数据模型。

让底层开发程序员专注于实现和优化数据处理,又不改变数据的使用接口;让用户专注于数据接口来进行问题的解决,而无需考虑如何具体实现这些接口。

通过层层抽象降低了问题解决过程的复杂度。

06

6.为什么要研究和学习算法

(1)学习各种不同问题的解决方案,有助于我们在面对未知问题的时候,能够根据类似问题的解决方案来更好地解决。

(2)各种算法通常有较大差异,我们可以通过算法分析技术来评判,判断法本身特性,而不仅仅根据实算法的程序在特定机器和特定数据和特定数据上运行的表现来评判他。

(3)即使同一个程序,在不同的运行环境和输入数据不同的情况下,其表现的差异可能也会很大。在某些情况下,当我们碰到棘手的难题,可以区分这种问题是根本不存在算法,还是可以找到算法但需要耗量大量的耗费大量的资源,我们只能够近似的去处理。

(4)某些问题解决需要一些折中的处理方式,我们需要学会在不同算法之间选择以确保合适当前条件的要求。

今天的学习内容就到这里啦~欢迎大家提出意见、指导。明天见喽,感谢大家的阅读。

python数据结构与算法分析_数据结构与算法(Python版)相关推荐

  1. python数据结构与算法分析_数据结构和算法分析

    问题引出 假设有一道题目:有一组N个数而要确定其中第k个最大者,我们称之为选择问题,那么这个程序如何编写?最直观地,至少有两种思路: 1.将N个数读入一个数组中,再通过某种简单的算法,比如冒泡排序法, ...

  2. python运动物体检测_运动检测ViBe算法python实现代码

    运动物体检测一般分为背景建模和运动物体分析两步.即构建不包含运动物体的背景模型.然后将新的视频帧和背景模型对比,找出其中的运动物体.目前比较好的背景建模算法有两种:1)文章(Zivkovic Z. ( ...

  3. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  4. 数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss

    数据结构与算法分析 C++语言描述第四版.Mark Allen Weiss 可用于自学数据结构与算法,数据结构与算法分析对于C++的学习至关重要,应该努力掌握好! 百度网盘: 链接:https://p ...

  5. python数据结构视频百度云盘_数据结构与算法Python视频领课

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 课程简介: 本课程包含Python编程基础的基本语法及变量,基本数据结构,Code Structure,Function.让学生在学会Python基础的同 ...

  6. python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

    ##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...

  7. java对数据结构的了解_数据结构对java有用吗

    设计一个数据结构其实就是把现有的基本数据类型组织.封装起来.相对来说数据结构对于C/C++比较重要,因为JAVA类机制实在太强大了,类库其实可以理解为数据结构的封装.即使对于一些比较复杂的抽象数据类型 ...

  8. 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归

    1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...

  9. 我的python学习笔记全集_记录我的Python学习笔记

    不想再像以前那样,什么都从头开始学习语法.总结语法,这样反而会过分纠结于语法,耽误了开发,毕竟语言的主要属性是工具,次要的属性是语言本身. 所以还是先熟练使用语言去进行开发,等足够熟悉了,再去研究语言 ...

最新文章

  1. 原根与指标(离散对数)
  2. 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数
  3. ubuntu 10.4非法关机后上不了网
  4. 創建oracle用戶及表空間,window,linux下創建oracle用戶及表空間 對比 易於學習
  5. Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil
  6. 谈操作系统的碎片化和融合
  7. 安装 Nexus——war版本
  8. 离婚率逐年上升,数据分析告诉你背后的主因竟然是它!
  9. oracle mysql安装图解 linux_Linux上Oracle 11g安装步骤图文详解
  10. 自然语言处理工具HanLP被收录中国大数据产业发展的创新技术新书《数据之翼》...
  11. 国外各厂家Visio素材搜集网站--系统集成必备
  12. EF+MYSQL 闪退
  13. 利用nginx实现内网地图瓦片代理
  14. css 效果之并列排列
  15. html5 按钮css样式修改,css样式制作的漂亮按钮
  16. 【docker】虚拟化和docker容器概念
  17. VXE-TABLE V4 表格表尾合并
  18. 珍大户 认知世界的经济学课程推荐电影《大空头》链接地址及笔记
  19. rabbit-1简介
  20. js,提示,eclipse

热门文章

  1. Confluence 6 指派和撤销空间权限
  2. Powershell获取当前机器的序列号用户名域
  3. 转:MySQL 开发实践 8 问,你能 hold 住几个?
  4. C#文件和文件夹输入输出流代码
  5. mysql从入门到精通之数据库安装图解
  6. jfreechart的使用
  7. 新手初学Regular Expression正则表达式--快速入门
  8. 异步委托实现多线程winform控件编程
  9. ubuntu14.04系统扩容的方法
  10. Python趣味编程小技巧,图片转炫酷字符画,一看就是高手