数据结构
文章平均质量分 77
数据结构学习数据结构学习
铃音.
如鱼饮水,冷暖自知
展开
-
B树和B+树(平衡多路查找树)
比如说这个 word 文档右击查看它的属性,虽然大小是46.9KB,但是占用空间是48KB,这是4K的整数倍,也就是磁盘加载数据到内存中都是datapage的整数倍。然后顺着磁盘块1的p2找到磁盘块3,再把磁盘块3加载到内存里面,然后2831,找到磁盘块3的p2了。这大大降低了高度,允许更快的磁盘访问。首先把磁盘上的这个块加载到内存里,1628,找到磁盘块1的p2,这是进行的第一次IO。查找37,根节点是48,48>37,看48的左子树,25原创 2022-11-01 11:22:44 · 785 阅读 · 4 评论 -
排序与查找--散列和冲突解决方案(python)
1原创 2021-08-20 23:56:46 · 526 阅读 · 0 评论 -
排序与查找算法总结(python)
顺序查找概念:如果数据项保存在列表这样的集合中,则具有线性关系,可以通过下标(index)来访问和查找数据项。顺序查找:确定列表中是否存在需要查找的数据项。(数据项是无序的)首先从列表的第1个数据项开始,按照下标增长的顺序,逐个比对数据项,如果到最后一一个都未发现要查找的项,那么查找失败。代码:算法分析:因为数据项在列表中各个位置出现概率相等,所以平均情况下,比对的次数是n/2,所以,顺序查找的算法复杂度是O(n)。(数据项是有序的)下图查找数据项50,当看到54,可知不会原创 2021-08-19 00:44:36 · 736 阅读 · 4 评论 -
树和二叉树
文章目录一.树的基本概念二.二叉树一.树的基本概念树的总结点数=总度数+1=20×4+10×3+1×2+10×1+1=123总结点数=度为0的结点数+度为1的结点数+度为2的结点数+度为3的结点数+度为4的结点数度为0的结点数就是叶子结点数123-20-10-1-10=82二.二叉树...原创 2021-12-03 18:58:59 · 1643 阅读 · 2 评论 -
贪心法,分治法,动态规划,回溯法,枚举法,分支限界法
。原创 2021-08-27 22:49:12 · 550 阅读 · 2 评论 -
递归(python)
文章目录1.递归?理解递归递归算法三定律2.简单应用:数列求和问题思考代码1.递归?理解递归递归就是将问题分解为规模更小的相同问题。就像下图的存钱罐一样,不断不断变小~~持续分解,直到可以用非常简单直接的方式解决问题。明显特征:在运行过程中调用自己递归算法三定律1.递归算法必须要有基本结束条件2.递归算法必须能改变状态向基本结束条件演进3.递归算法必须调用自身2.简单应用:数列求和问题给定一个列表,返回所有数的和(不使用循环语句)举例:[1,3,5,7,9]返回:25思考原创 2021-08-26 16:53:46 · 732 阅读 · 23 评论 -
线性结构--双端队列Deque(python)
文章目录???? 1.什么是双端队列Deque????? 2.抽象数据类型Deque????3.Python实现ADT Deque⚽ 4.应用:“回文词”判定???? 1.什么是双端队列Deque?双端队列Deque是一种有次序的数据集。队列的每一端都可以插入数据项和移除数据项。例如下面的表情包,就是:大佬可以从左边加入退出,也可以从右边加入退出~某种意义上说,双端队列集成了栈和队列的能力双端队列并不具有内在的LIFO或者 FIFO特性。如果用双端队列来模拟栈或队列,需要由使用者自行维护操原创 2021-08-12 22:41:26 · 532 阅读 · 0 评论 -
打印机算法--队列(python)
1.案例描述在计算机科学实验室里考虑下面的情况:平均每天大约10名学生在任何给定时间在实验室工作。这些学生通常在此期间打印两次这些任务的长度范围从1到20页。实验室中的打印机较旧,每分钟以草稿质量可以处理10页。打印机可以切换以提供更好的质量,但是它将每分钟只能处理五页。较慢的打印速度可能会使学生等待太久。应使用什么页面速率?2.案例分析我们可以通过建立一个模拟实验来决定:我们将需要为学生,打印任务和打印机构建表示如下图。当学生提交打印任务时,我们将把他们添加到等待列表中,一个打印任原创 2021-08-11 11:34:33 · 1696 阅读 · 0 评论 -
线性结构--队列Queue(python)
1. 队列抽象数据类型及Python实现生活中的队列当人排队时,首先出现在队尾,随着队首人的离去,他逐渐接近队首抽象数据类型Queue数据项仅添加到“尾rear”端,而且仅从“首front”端移除 Queue具有FIFO的操作次序Queue():创建一个空队列对象,返回值为 Queue对象;enqueue(item):将数据项item添加到队尾, 无返回值;dequeue():从队首移除数据项,返回值为队首 数据项,队列被修改;isEmpty():测试是否空队列,返回值为布尔值si原创 2021-08-11 01:03:31 · 247 阅读 · 0 评论 -
线性结构--栈 Stack(python)
本专栏主要基于北大的数据结构与算法python版进行整理。课程链接1.什么是线性结构?生活中的线性结构线性结构的称呼 不同线性结构的关键区别在于数据项增减的方式。有的结构只允许数据项从一端添加,而有的结构则允许数据项从两端移除。例如食堂排队打饭,人数如果要增加只能从后面排队,人减少只能打完饭再走。我们从4个最简单但功能强大的线性结构入手 ,开始研究数据结构:栈Stack,队列Queue,双端队列Deque和列表List。2.栈抽象数据类型及Python实现...原创 2021-08-07 23:47:44 · 470 阅读 · 0 评论 -
算法分析(python)
本专栏主要基于北大的数据结构与算法python版进行整理。课程链接1.什么是算法分析?对比程序,还是算法?如何对比两个程序?看起来不同,但解决同一个问题的程序,哪个“更好”?代码的风格,可读性都可以对比程序的好坏。好的程序变量名清晰,无用垃圾代码少。而比起程序,我们更看重算法本身的特性。程序和算法的区别算法是对问题解决的分步描述程序则是采用某种编程语言实现的算法,同一个算法通过不同的程序员采用不同的编程语言,能产生很多程序。算法分析的概念算法分析主要就是从计算资源消耗的角度来评判和原创 2021-08-06 10:58:50 · 747 阅读 · 0 评论 -
计算机内存
1.内存单元和地址程序中直接使用的数据保存在内存中。内存: CPU 可以直接访问的数据存储设备。外存:磁盘、光盘、磁带等。数据:保存在外存里的数据必须先装入内存,而后 CPU 才能使用它们。内存只能临时存放程序的指令和数据。当电脑关闭后,内存中的数据也会随之消失。计算机中的程序指令和操作数据都是以二进制形式在内存中存储与计算。我们可将内存看作一排方格,每个方格存储0或者1,而一组方格代表一段完整的数据。例如:框起来的那组方格表示二进制的0110,也就是十进制的6。bit和byte:原创 2021-08-21 23:47:53 · 288 阅读 · 2 评论 -
数据结构与算法--概述(python)
本专栏主要基于北大的数据结构与算法python版进行整理。课程链接1.数据时代信息时代就是数据的时代,数据结构与算法这门课将展示如何把数据组织起来进行有效的处理以解决问题2.问题求解的计算之道人们在生活中会遇到很多问题,因为数学的推理,明确,严谨,使得数学成为解决问题的终极工具,而数学具有可检验性,也就是可以验证的,所以大数学家希尔伯特提出:能否基于有穷观点的能行方法,来判断数学命题的真假。也就是说,如果有这个方法的话,很多数学问题,可能不用人去做,而是用程序,用机械的方法去解决,而什么是基于有穷原创 2021-08-02 23:50:33 · 193 阅读 · 0 评论