Python数据结构与算法分析
文章平均质量分 78
Zy_Yin123
加油!
展开
-
排序算法的Python实现
此时,分割点左边的元素都小于基准值,右边的元素都大于基准值。分治策略:每次将列表一分为二,并对两部分都递归调用归并排序,当两部分都有序后就进行归并(将两个小的有序列表并为一个大的有序列表)。不过,由于冒泡排序要遍历列表中未排序的部分,因此它具有其他排序算法没有的用途。这种方法的思路是,如果头元素的正确位置不在列表中部附近,那么三元素的中间值将更靠近中部。在列表较低的一端维护一个有序的子列表,并逐个将每个新元素按照大小“插入”这个子列表。的列表,如果分区操作总是发生在列表的中部,就会切分。原创 2022-09-14 17:01:40 · 345 阅读 · 0 评论 -
散列函数的应用:实现映射抽象数据类型
很大,则意味着散列表很拥挤,发生冲突的概率也就很大。因此,冲突解决起来会更难,找到空槽所需的比较次数会更多。若采用链接法,冲突越多,每条链上的元素也越多。它是将键和值关联起来的无序集合,其中的键是不重复的,键和值之间是一一对应的关系。键用来查找关联的值,这个概念常常被称作映射。然而,因为可能发生冲突,所以比较次数通常不会这么简单。很小,那么发生冲突的概率就很小,元素也就很有可能各就各位。和之前一样,来看看搜索成功和搜索失败的情况。,则搜索成功的平均比较次数如下。,搜索成功的平均比较次数如下。原创 2022-09-14 11:42:17 · 271 阅读 · 0 评论 -
动态规划:以找零钱问题为例
通过记录minCoins表中每一项所加的硬币,可以轻松扩展dpMakeChange,从而记录所用的硬币。如果知道上一次加的硬币,便可以减去其面值,从而找到表中前一项,并通过它知晓之前所加的硬币。许多计算机程序被用于优化某些值,例如找到两点之间的最短路径,为一组数据点找到最佳拟合线,或者找到满足一定条件的最小对象集合。,并在计算新的最少硬币数之前,检查结果是否已在表中。要进行真正的找零,不光要提供minCoins,还需要记录所用的硬币。优化问题的一个经典例子就是在找零时使用最少的硬币。原创 2022-09-07 18:04:44 · 2367 阅读 · 0 评论 -
Python数据结构——队列 模拟队列打印问题
当学生提交打印任务时,我们需要将它们加入等待列表中,该列表是打印机上的打印任务队列。当打印机执行完一个任务后,它会检查该队列,看看其中是否还有需要处理的任务。如果有,那么打印机就处于工作状态,并且其工作所需的时间可以通过要打印的页数来计算。上面的输出结果显示,按每分钟5页的打印速度,任务的等待时间在23.85秒和313.94秒之间,相差约5分钟。我们编写了一个程序来模拟随机提交的打印任务,待打印的页数也是随机的。如果各页数出现的概率相等,那么打印任务的实际时长可以通过1-20的一个随机数来模拟。原创 2022-09-03 17:49:39 · 1496 阅读 · 1 评论 -
传土豆游戏
考虑这样一个儿童游戏:传土豆。在这个游戏中,孩子们围成一圈,并依次尽可能快地传递一个土豆。在某个时刻,大家停止传递,此时手里有土豆的孩子就得退出游戏。重复上述过程,直到只剩下一个孩子。这个游戏其实等价于著名的约瑟夫斯问题。弗拉维奥·约瑟夫斯是公元1 世纪著名的历史学家。相传,约瑟夫斯当年和39 个战友在山洞中对抗罗马军队。眼看着即将失败,他们决定舍生取义。于是,他们围成一圈,从某个人开始,按顺时针方向杀掉第7 人。约瑟夫斯同时也是卓有成就的数学家。原创 2022-09-03 16:47:13 · 995 阅读 · 0 评论 -
Python算法分析——以异序词检测为例
采用经典的异序词检测的示例,展示不同数量级的算法原创 2022-07-25 17:53:14 · 520 阅读 · 0 评论