首页 > 编程语言 >Python常用算法思想--总概篇

Python常用算法思想--总概篇

时间:2024-04-04 09:01:00浏览次数:33  
标签:思想 Python 任务 问题 总概 算法 解决 -- 执行

算法的起源:欧几里德的《几何原本》中阐述的求两个数的最大公约数的过程。

算法的定义:解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法描述解决问题的策略机制。

算法的本质:算法是程序的灵魂,也是衡量一位程序员水平高低的最好参照物。

算法的表示方法:一般情况有三种方法,分别是顺序结构、选择结构、循环结构。顺序结构是两个任务之间有先后顺序,先执行一个任务再执行下一个任务;选择结构是根据给定的条件是否成立来选择执行任务,当条件成立时执行任务,条件不成立时执行另外任务;循环结构有两种情况,一是直到型循环,二是当型循环,其原理都是一样的,当条件成立的时候,循环执行任务。

Python算法思想:本系列中将详细讲解六种算法思想,具体如下

一、枚举算法思想

也称为穷举算法,重点在于找到所有可能答案的情况,然后根据条件判断答案是否合适,合适保留,不合适舍弃。这一思想主要用于解决猜数、24点游戏、指定长度的所有字符串等问题。

二、递归算法思想

重点在于将大问题逐级分解为同类问题的子问题,进一步分解为更小的问题,直到每个小问题可以解决为止。这一思想主要用于解决“斐波那契数列”、“汉诺塔”、“n的阶乘”、”最大公约数和最小公倍数“等问题。

三、分治算法思想

重点在于将一个问题分解为多个较小的子问题,这些子问题相互独立且与原问题性质相同,求得子问题的解,就可得到原问题的解。这一思想主要用于解决快速排序、找出数据的最大值和最小值、归并排序等问题。

四、贪心算法思想

重点在于将不从整体最优上考虑,而是在某些方面上达到最优。这一思想主要用于解决”摇摆序列“、移除K个数字、“霍夫曼编码”、“Kruskal”算法、“Prim”算法等问题。

五、回溯算法思想

重点在于试探,先假设某一种可能进行试探,一旦发现试探的假设情况为错误,将回退进行重新假设试探,如此反复进行,直到找到解。这一思想主要用于解决“图的遍历”、“爬楼梯”、“m着色”、“迷宫”等问题。

六、迭代算法思想

重点在于对一定步骤的任务进行重复执行,在每次执行的过程中,都从变量的原值推算出它的新值。这一思想主要用于解决各种方程解、求复杂方程的根等问题。

后续将陆续更新每一种算法思想的具体解法,包括python实践案例,更新ing

若有问题可私信我,欢迎关注,感谢小主!

标签:思想,Python,任务,问题,总概,算法,解决,--,执行
From: https://blog.csdn.net/helloshili2011/article/details/137358269

相关文章

  • 微服务技术问答系列-NO2
    一.PACT在微服务架构中的用途是什么?PACT在微服务架构中主要用于实现消费者驱动的契约测试。它允许测试服务提供者和消费者之间的交互,并与之进行契约隔离,从而提高微服务集成的可靠性。PACT是一个开源工具,专门用于测试微服务架构中的服务之间的交互,特别是关注消费者和生产者之间......
  • 微服务技术问答系列-NO3
    一.如何在测试中消除非决定论?非决定论,作为与决定论相对的一种哲学学说,主张“意志自由”,否认客观世界存在任何规律、必然性和因果性。然而,在软件测试的语境中,非决定论通常与测试结果的不可预测性和不可靠性相关。为了消除测试中的非决定论因素,确保测试结果的稳定性和可靠性,可以......
  • 宁波ISO27001认证:信息安全管理的黄金标准
    ......
  • 常见面试题--动态规划介绍(附C++源码实现)
    关注我,持续分享逻辑思维&管理思维;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》, 《做好面试准备,迎接2024金三银四》。【图解《程序员面试常见的十大算法......
  • IDEA 中能提高开发效率的插件
    目录前言插件RainbowBracketsAceJumpPOJOtoJSONJsonHelperMybatisXMavenHelperPlantUMLIntegrationTONYYILingma前言IDEA里又很多好用的插件可以帮助我们提升开发效率,这里罗列下自己开发过程中常用的插件,善于利用插件,可以将自己的IDEA调教成自己中意的......
  • 前端(动态雪景背景+动态蝴蝶)
     1.CSS样式<style>html,body,a,div,span,table,tr,td,strong,ul,ol,li,h1,h2,h3,p,input{font-weight:inherit;font-size:inherit;list-style:none;border-spacing:0;border:0;border-collapse:......
  • 关系数据库标准语言SQL难题整理
    文章目录1、查询选修三门以上课程的学生学号2、查询选修课程中至多一门>70分的学生学号3、查询平均成绩>=90分的学生学号和平均成绩4、查询成绩都大于70分学生的成绩5、找出每个学生超过他自己选修课程平均成绩的课程号6、查询非计算机科学系某一个学生年龄小的学生姓名......
  • 过拟合(Overfitting)
    过拟合(Overfitting)是机器学习中的一个重要概念,它指的是模型在训练数据上表现得过于优秀,以至于在训练集上达到了很高的准确率,但在未见过的数据(测试集或实际应用中的数据)上表现却大幅下降的现象。这通常意味着模型学习到了训练数据中的噪声或细节,而非数据的通用规律。过拟合的原......
  • Python_matplotlib进阶
    Python_matplotlib跳转链接之前的博客中已经展示了使用python的matplotlib库进行一些基础图像的绘制,本篇进一步展示一些matplotlib中的一些进阶图像绘制。importpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']Titanic=......
  • 在排序数组中查找元素的第一个和最后一个位置
    34.在排序数组中查找元素的第一个和最后一个位置-力扣(LeetCode)题目描述给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1,-1]。你必须设计并实现时间复杂......