- 博客(11)
- 收藏
- 关注
原创 Udemy——Python数据结构与算法(1)
链表:在链表的末尾添加一个数值,需要一个遍历整个数组的指针(tail指针同理),速度为O(n);在开头添加一个数值,只需要增加一个指向原本第一个(现在第二个)的指针,速度为O(1),与链表长度无关;在链表中间添加一个数值,也需要遍历整个数组,速度同样为O(n)字典指针具有传递功能,而赋值只能进行一次,原本变量的值改变后需要再次赋值。Ω--最佳速度 θ--平均速度 O--最坏情况。O(1)指不会随着数量增加而导致操作量增加。O(n)数量级的计算速度,省略常数倍数。各种操作所消耗的时间。
2024-10-31 01:46:19 372
原创 学习记录DAY7
选定第一个数字,然后用标记与每个数比较,小于等于它的丢到前面为红区,大于他的丢到后面为蓝区。如此之后,用标记将选定数字与红区最后一个数字位置互换,则为选定数字的最终位置。将每个数字直接放到其最后对应的位置。运行速度:O(n2)
2024-10-21 15:28:55 254
原创 学习记录DAY6
从一个数组中选出最小(大)的,放在第一个位置,然后接着在剩下的数中重复此操作直到排序完成,运行时间为O(n2)将多项式分为较高次的上半部分和较低次的下半部分,分别相乘再加上略去的系数。但总体的运行速度是一样的。(2)简单的分而治之算法。(3)高级的分而治之算法。
2024-10-19 02:10:06 272
原创 学习记录DAY5
条件:原问题能被分解成多个同一类型且互不重叠的小问题,按顺序解决各个子问题后,将方法合成在一起即解决了原问题。从小到大依次排序,先判断被搜索对象与两端的大小关系,若在范围内则搜索中项直到搜索结束。(1)分而治之算法(divide and conquer)
2024-10-16 01:40:25 588
原创 学习记录DAY4
假设都安排好了,思考哪种排序会运行得更快,贪婪算法在合适的排序后速度会更快。贪婪算法不一定是最安全的(最优解),需要根据情况具体甄别。一群人分组,同组年龄差不能超过2岁,从最小的开始,往上。有一堆散装香料,计算每个的单位价值,拿出最大化。排序 O(n log n)+贪婪算法O(n)贪婪选择-证明安全-解决子问题-估计运行时间。排序+背包时间为O(n log n)安全选择:一致情况下的最优解。排序后背包时间为O(n)
2024-10-15 03:11:05 463
原创 学习记录DAY3
所以要将病人治疗时间从短到长排列,再以此进行治疗的总等待时间最短,算法消耗时间为O(n log n)通过贪婪算法将与原问题(problem)相似的子问题(subproblem)进行简化。计算最少的总等待时间 总等待时间T总 每人治疗时间Tn 人数n。·如果不将病人按照治疗时间排列,消耗时间为O(n^2)第一位患者治疗时候,T总=(n-1)*Tn 以此类推。
2024-10-14 02:21:16 562
原创 学习记录DAY2
我们说 f(n) = Ω(g(n)),如果存在一个正的常数 c 和一个正整数 n0,使得对于所有 n ≥ n0,有 f(n) ≥ c * g(n)。
2024-10-12 02:40:32 433
原创 学习记录DAY1
(2)最大公约数计算:欧几里得算法:用除数和余数反复相除进行计算。(1)斐波那契数列的快速计算:通过数组的储存减少重复计算。print(gcd(a, b)) # 输出 6。
2024-10-07 01:00:39 218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人