基础算法思想课件•算法概述•基础算法思想•算法应用场景•算法复杂度分析•经典算法案例解析•算法设计与分析技巧算法的定义010203算法的特性有穷性确定性输出输入可行性算法的分类010203按功能按复杂度按应用领域分治算法贪心算法在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法
贪心算法在每一步选择中都采取当前状态下最好或最优的选择,从而希望导致结果是最好或最优的
贪心算法不一定能得到全局最优解,但能得到近似最优解
例如,在找零问题中,贪心算法会按照面值大小顺序选择纸币,以最小花费找零
动态规划回溯算法分支限界法数据排序查找问题要点一要点二线性查找二分查找从数据结构的一端开始逐个检查每个元素,直到找到所查元素为止
在有序数组中查找某一特定元素的搜索算法
搜索过程从数组的中间元素开始,如果中间元素正好是目标值,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较
如果在某一步骤数组为空,则代表找不到
这种搜索算法每一次比较都使搜索范围缩小一半
查找问题分块查找哈希查找最短路径问题Dijkstra算法Bellman-Ford算法Floyd-Warshall算法图形搜索问题广度优先搜索深度优先搜索A*搜索算法时间复杂度时间复杂度定义时间复杂度分类时间复杂度是衡量算法运行时间随输入规模增长而增长的量度,通常用大O表示法表示
常见的时间复杂度有O(1)、O(logn)、O(n)、O(nlogn)、O(n^2)、O(n^3)等,其中n为输入规模
时间复杂度分析方法通过计算算法中基本操作的数量,并将其与输入规模的关系进行比较,从而确定算法的时间复杂度
空间复杂度空间复杂度定义123空间复杂度分析方法空间复杂度分类算法优化的策略选择合适的算法优化数据结构根据问题的性质和规