算法与数据结构读后感,数据结构与算法分析读后感

  算法与数据结构读后感,数据结构与算法分析读后感

  首先总结几个概念算法的概念。五个特性:投入、产出、贫困、确定性、可行性。

  算法是计算机处理信息的本质。因为计算机程序本质上是一种算法,它将精确的步骤传达给计算机来执行指定的任务。通常,算法在处理信息时,是从输入设备或数据的存储地址读取数据,将结果写入输出设备或某个存储地址,然后调用。

  算法是解决独立问题的方法和思想。

  对于算法来说,实现的语言不重要,思想才重要。

  有很多语言来描述算法的实现版本,包括C描述、C描述和Python描述,但目前实现是用Python语言描述的。

  数据结构学生的信息可以用列表或字典保存。在这两种保存下搜索学生信息时,时间的复杂度是不一样的。

  为了解决这个问题,我们需要保存数据,并根据保存数据的方式来设计和实现算法。如果用不同的方式保存数据,就需要用不同的算法来处理。算法解决问题的效率越高,我们就越需要考虑如何保存数据。这是数据结构。

  算法和数据结构密不可分。数据是一个抽象的概念,对它进行分类就可以得到编程语言的基本类型。比如int,float,char等。数据元素之间没有独立的关系,只有特定的关系,这些关系就是结构。数据结构是数据对象中数据元素之间的关系。

  Python为我们提供了很多现成的数据结构类型。这些系统都是自己定义的,不需要自己定义的数据结构都是Python内嵌的数据结构,比如列表、元组、字典等。另一方面,Python系统也有未定义的数据组织方法。您需要自己定义如何组织这些数据。这些数据的组织被称为堆栈、队列和其他Python的扩展数据结构。

  算法和数据结构之间的差异

  数据结构只是静态地描述了数据元素之间的关系。

  高效的程序需要根据数据结构来设计和选择算法。

  程序=数据结构算法

  总结:算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题的载体。

  仓库

  类型需要几个字节的内存大小(不同的类型占用不同的空间)-存储。

  我取出的字节类型有哪些?Int 4字节char 1字节

  的所有高级数据结构都有基本的数据结构配置。

  例如,int占用的4字节int 1从000000000000000000000000000000000000000000000000000000000000000000000000000000000000000开始。

  八个。程序表

  将数据存储在连续的内存区域。

  图A显示了序列表的基本形式。数据元素本身是连续存储的。每个元素占用的存储单元大小是一定的(数据类型相同),每个元素的下标就是它的逻辑地址。另一方面,存储单元物理地址(实际存储器地址)可以通过将逻辑地址(第I个单元)和存储单元的大小(c)的乘积加到存储区域的头地址(10c)和(e0)来计算。

  位置(ei)位置(ei ) c*i

  因此,在访问一个指定的特征时,不需要从头遍历,通过计算就可以得到对应的地址,其时间复杂度为o(1)。

  如果元素大小不一致,需要将实际的数据元素以图B中外部元素的形式单独存储,并保存序列表中每个元素位置对应的元素的地址信息,即链接。因为每个链接都需要相同的存储量,所以根据上面的公式,可以计算出元素链接的存储位置,并且可以沿着链接找到实际存储的数据元素。注意,图B中的C是存储链接目标所需的存储量,而不是数据元素的大小。通常这个量很小。

  图B中的有序表也叫实际数据的索引,是最简单的索引结构。

  0下标可以理解为偏移量,所以在寻址时特别有用。

  表的结构。

  一个表的完整信息由两部分组成:表中元素的集合,以及正确操作必须记录的信息,即关于表整体情况的信息。这些信息主要包括两个元素存储的容量和当前表中现有元素的数量。

  表格排序的两种基本方式

  图A是一个集成结构,存储表信息的单元和元素存储区连续排列在一个存储区中,两个部分数据的整体形成一个完整的顺序表对象。

  集成结构强大且易于管理。然而,由于数据元素存储是表对象的一部分,所以在创建顺序表之后,元素存储将是固定的。

  图B显示了分离的结构。只有整个表的相关信息,即元素的容量和数量,存储在表对象中。实际的数据元素存储在另一个独立的元素存储器中,并与基本表对象相链接。

  替换元素存储

  集成结构由于序列表的信息区和数据区是连续存储的,如果要改变数据区,只能整体转移。即,整个序列表的对象(存储序列表的结构信息的区域)改变。

  如果要交换数据区,隔离结构只需要更新表的信息区中数据区的链接,顺序表的对象保持不变。

  元素存储扩展

  通过使用分离结构顺序表,可以用更大的区域替换数据区,从而在不改变表对象的情况下扩展数据区,不需要改变所有使用这个表的地方。只要程序运行环境(计算机系统)中有可用内存,这种表结构就不会满,也就不可操作。人们把序列表通过这种技术实现了

  动态序列表,因为它的容量可以在使用中动态变化。

  两种扩张策略

  为每次扩展添加固定数量的存储位置的策略,例如为每次扩展添加10个元素位置,可以称为线性增长。

  特点:节省空间,但是扩展操作频繁,操作次数多。

  每次扩展的容量加倍,例如每次扩展的存储空间加倍。

  特点:减少了扩展操作的执行次数,但可能会浪费空间资源。用空间换时间,推荐方式。

  表的顺序操作

  1)插入到未插入的2)按顺序插入O(n) 3)无序插入。

  2)尾部删除2)保序删除3)保序删除

  Python中的序列表

  Python中的List和tuple采用了序列表的实现技术,拥有前面讨论的序列表的所有属性。

  Tuple是不可变类型,即不可变序列表,所以不支持任何改变其内部状态的操作。在其他方面,它类似于list。

  列表的基本实现技术

  Python类型列表是一个元素个数可变的线性表,可以添加和删除元素,在各种操作中保持已有元素的顺序(即保序)。它还具有以下行为特征:

  对于基于下标(位置)的高效元素访问和更新,时间复杂度应为O(1);

  为了满足这个特性,应该采用顺序表技术,表中的元素存储在一个连续的存储区域中。

  可以添加任何元素,在不断添加元素的过程中,表对象的标识符(由函数id获得的值)保持不变。

  为了满足这个特性,需要能够改变元素存储区域,并且要保证存储区域改变时列表对象的id不变,只能采用分离实现技术。

  在Python的官方实现中,list是一种动态序列表,通过分离技术实现。这就是为什么使用list.append(x)(或list.insert(len(list),x),即在尾部插入)比在指定位置插入元素更高效的原因。

  在Python的正式实现中,list实现采用了以下策略:在创建一个空表(或者非常小的表)时,系统分配一个可以容纳8个元素的存储区域;当执行插入操作(插入或追加)时,如果元素存储区已满,则用4倍大的存储区替换它。但如果此时牌桌已经很大了(目前的门槛是50000),那就改变策略,翻倍。引入了这种策略变化

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • mysql复合索引和组合索引,mysql组合索引数据结构
  • mysql复合索引和组合索引,mysql组合索引数据结构,Mysql之组合索引方法详解
  • mysql复合索引和组合索引,mysql复合索引数据结构
  • mysql复合索引和组合索引,mysql复合索引数据结构,MySQL的复合索引总结
  • b+树 多路搜索树,数据结构中树的分类
  • b+树 多路搜索树,数据结构中树的分类,数据结构-树(三):多路搜索树B树、B+树
  • avl树的构造,avl树特性,数据结构之AVL树详解
  • 数据结构c语言哈夫曼树,c语言哈夫曼树的构造,使用C语言详解霍夫曼树数据结构
  • c语言数据结构算法编程库,数据结构 c语言中文网
  • c语言数据结构算法编程库,数据结构 c语言中文网,C语言编程数据结构基础详解小白篇
  • c++纸牌游戏,数据结构纸牌游戏c语言
  • c++纸牌游戏,数据结构纸牌游戏c语言,C语言实战之纸牌游戏
  • ,,c#解析jobject的数据结构
  • ,,javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
  • ,,Java 数据结构与算法系列精讲之背包问题
  • 留言与评论(共有 条评论)
       
    验证码: