算法:关注于解决问题的步骤和解题思路。
数据结构:解决一组数据保存形式的问题。
*Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
数据保存类型不一样,最终处理时候的算法不一样。
数据结构指数据对象中数据元素之间的关系。
数据结构指数据对象中数据元素之间的关系:
数据结构只是静态的描述了数据元素之间的关系。
高效的程序需要在数据结构的基础上设计和选择算法。
程序 = 数据结构 + 算法
总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体。
抽象数据类型(ADT):把构建出来的数据结构和它所支持的操作放在一起;数据结构定义好,支持的操作列出来,操作具体如何实现不用管。
最常用的数据运算有五种:
- 插入
- 删除
- 修改
- 查找
- 排序
几种基本的数据结构:
内存:
计算机的内存跟CPU打交道,处理数据。
内存是什么样的模型?——内存以字节作为基础存储数据,一个字节八位(二进制数据),作为存储标识。
*对于32位机来说,整形(普通整形,非长整型)需要四个单元。
![](https://img.haomeiwen.com/i2228081/88b48cbc86a1ad6e.png)
我们看到的是一个整形1,实际上占四个字节。
*Python中没有的char,就理解为一个字符。
类型的第一个本质:决定在计算机中占多少个内存单元
所有高级的数据结构都是由基本的数据类型来构成的。
连续存放的数据结构如列表,一次计算就能定位到所在位置。
顺序表:将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。(按顺序存储,展开是表格形式)
![](https://img.haomeiwen.com/i2228081/c7dca03ab1b9ba96.png)
假设操作系统32位,存Li = [200, 390, 78, 12112]的时候,一次性向系统申请了4x8Bytes=32Bytes的存储单位;用变量指向之后,变量代表了起始地址。
所以,列表的第一位从0开始,这个下标(逻辑地址)代表的是偏移的位数,0代表不偏移,所以才是第一位。
![](https://img.haomeiwen.com/i2228081/9af6b775b697d6ca.png)
当存储的列表中有不同的元素类型,所占用的内存大小不一,无法再用像存整数一样索引;但是它们的地址大小是一样的,所以可以把地址依次存储。
![](https://img.haomeiwen.com/i2228081/7e15abc66493a883.png)
先申请一些内存地址,把列表中每个元素存储,存储的地址是随机的;再申请一个内存地址,把每个元素的地址按顺序依次存储。这个时候真正的元素在顺序表之外,成为元素外置。
![](https://img.haomeiwen.com/i2228081/b74bad06265a8828.png)
网友评论