Python经典算法
文章平均质量分 55
用实例讲解各种经典算法
魔都霸王东
魔都程序员一枚
展开
-
python 经典算法之--贪心算法(Greedy Algorithm)
根据贪心算法的思想,我们每次都选择结束时间最早的活动,然后将活动列表中与该活动时间冲突的活动从列表中删除,以便于后续选择活动时不会冲突。因此我们首先选择 25 分硬币,再选择 25 分硬币,然后我们只需要再加上一枚 10 分硬币,1 枚 5 分硬币和 2 枚 1 分硬币即可。假设我们有一个活动列表,每个活动都有一个开始时间和结束时间,我们需要从中选出尽可能多的活动,使得它们不会发生时间上的冲突。如何用贪心算法来解决这个问题?输出结果为:[1, 2, 4, 5],即选出的活动编号分别为 1、2、4 和 5。原创 2023-09-08 15:40:55 · 1254 阅读 · 1 评论 -
python 经典算法之--动态规划算法(Dynamic Programming Algorithm)
它通过将原问题分解为若干子问题,逐个求解子问题的最优解,从而得到原问题的最优解。= s2[j-1]时,dp[i][j] = max(dp[i-1][j], dp[i][j-1])。其中,dp[i-1][j]表示不选第i个物品,dp[i-1][j-w[i]]+v[i]表示选择第i个物品。当s1[i-1] == s2[j-1]时,dp[i][j] = dp[i-1][j-1] + 1;初始状态为dp[0][j] = 0和dp[i][0] = 0。初始状态为dp[i][0] = 0和dp[0][j] = 0。原创 2023-09-08 15:39:28 · 747 阅读 · 1 评论 -
python 经典算法之--最短路径算法(Shortest Path Algorithm)
Bellman-Ford算法中,对于一条边(u, v),先从源点s到u的最短路径dist[u]已经求得,通过松弛操作,可以尝试更新从源点s到v的最短路径dist[v],如果更新成功,则表示有一条更短的路径从源点s到v。Bellman-Ford算法中,对于一条边(u, v),先从源点s到u的最短路径dist[u]已经求得,通过松弛操作,可以尝试更新从源点s到v的最短路径dist[v],如果更新成功,则表示有一条更短的路径从源点s到v。最短路径算法是一类算法,用于寻找图中两个节点之间的最短路径。原创 2023-09-08 15:34:47 · 5184 阅读 · 1 评论 -
python 经典算法之--最小生成树算法(Minimum Spanning Tree Algorithm)
Prim算法的基本思想是:从一个顶点开始,每次选择一个与当前生成树相邻的最小权值边加入生成树中,直到生成树包含所有顶点为止。Prim算法的基本思想是:从一个顶点开始,每次选择一个与当前生成树相邻的最小权值边加入生成树中,直到生成树包含所有顶点为止。Prim算法的基本思想是:从一个顶点开始,每次选择一个与当前生成树相邻的最小权值边加入生成树中,直到生成树包含所有顶点为止。Prim算法的基本思想是:从一个顶点开始,每次选择一个与当前生成树相邻的最小权值边加入生成树中,直到生成树包含所有顶点为止。原创 2023-09-08 15:33:33 · 1495 阅读 · 2 评论 -
python 经典算法之--广度优先搜索算法(Breadth-First Search Algorithm)
具体来说,该算法首先将起点加入队列中,然后从队列中取出第一个节点,扫描该节点的所有邻居节点并将其加入队列中,然后重复这个过程,直到找到终点或者队列为空为止。具体来说,该算法首先将起点加入队列中,然后从队列中取出第一个节点,扫描该节点的所有邻居节点并将其加入队列中,然后重复这个过程,直到找到终点或者队列为空为止。具体来说,该算法首先将起点加入队列中,然后从队列中取出第一个节点,扫描该节点的所有邻居节点并将其加入队列中,然后重复这个过程,直到找到终点或者队列为空为止。示例2:在一个迷宫中查找最短路径。原创 2023-09-08 15:29:48 · 1116 阅读 · 1 评论 -
python 经典算法之--深度优先搜索算法(Depth-First Search Algorithm)
深度优先搜索算法,也称为DFS算法,是一种遍历图或树的搜索算法,它先沿着一条路径一直走到底,然后回溯到上一个节点,继续沿着另一条路径走到底,直到所有节点都被遍历。深度优先搜索算法,也称为DFS算法,是一种遍历图或树的搜索算法,它先沿着一条路径一直走到底,然后回溯到上一个节点,继续沿着另一条路径走到底,直到所有节点都被遍历。我们使用DFS算法递归遍历所有可能的路径,在遍历的过程中记录路径,直到找到终点。我们使用DFS算法递归遍历所有可能的路径,在遍历的过程中记录路径,直到找到终点。原创 2023-09-08 15:28:15 · 2119 阅读 · 1 评论 -
python 经典算法之--堆排序算法(Heap Sort Algorithm)
堆排序算法是一种常用的排序算法,其时间复杂度为O(nlogn),具有稳定性和不占用额外空间的特点。堆排序算法基于二叉堆这种数据结构实现,包括建堆和排序两个阶段。排序:将堆顶元素(即最大元素)与末尾元素交换,将序列长度减1,重新构建大根堆,重复步骤2,直到排序完成。建堆:将待排序序列构建成一个大根堆或小根堆。以大根堆为例,堆顶元素为整个序列中最大元素。原创 2023-09-08 15:23:50 · 109 阅读 · 1 评论 -
python 经典算法之--归并排序算法(Merge Sort Algorithm)
归并排序是一种基于分治思想的排序算法,其主要思路是将一个大的排序问题分解成若干个小问题,然后分别解决这些小问题,最终将这些解合并起来得到最终解。函数中使用两个指针i和j分别在左右子数组中移动,并将较小的元素加入到结果数组中。最后将未添加到结果数组中的剩余元素添加到结果中。函数用于递归地将数组分成子数组,并调用。函数将分离的子数组合并成一个有序数组。原创 2023-09-08 15:20:59 · 387 阅读 · 1 评论 -
python 经典算法之--快速排序算法(Quick Sort Algorithm)
具体实现可以采用双指针法,初始时low指针指向序列的第一个元素,high指针指向序列的最后一个元素,以low指针指向的元素作为基准元素,从high指针向左扫描,找到第一个小于等于基准元素的元素A,然后从low指针向右扫描,找到第一个大于等于基准元素的元素B,将A和B交换位置,重复上述过程直到low指针和high指针重合,最后将基准元素和重合点的元素交换位置即可完成一次快速排序。最后,我们输出最高分和最低分。以第一个成绩为基准数,将其与其他成绩进行比较,将小于基准数的成绩放在左边,大于基准数的成绩放在右边。原创 2023-09-08 15:17:11 · 314 阅读 · 1 评论 -
python 经典算法之--二分查找算法(Binary Search Algorithm)
二分查找(Binary Search),也称折半查找,是一种效率较高的查找方法,该算法需要先将数组排序,然后通过不断的将查找区间折半来定位查找元素。从运行结果可以看出,二分查找算法成功地找到了元素11在数组中的位置,且运行效率比顺序查找要高很多。原创 2023-09-08 15:09:20 · 451 阅读 · 1 评论