算法基础
文章平均质量分 87
lxznjw
这个作者很懒,什么都没留下…
展开
-
算法小记-设计要求、时间效率度量、存储空间要求
算法二(二分查找)的最坏情况下,每次将数组规模缩小一半,大约在 10 次左右就能找到目标元素或确定不存在,时间复杂度为 O(log 1000) ≈ O(log n),算法的执行时间随着数据规模的增加,增长速率相对较慢。总体而言,对于算法的时间效率度量,我们主要关注最坏情况下的时间复杂度,通过分析算法的基本操作次数和输入规模的关系,选择最优的算法来解决问题,以提高算法的执行效率。算法二(二分查找)的时间复杂度为 O(log n),因为每次查找都将数组规模缩小一半,使得算法在大规模数据下的执行时间大大降低。原创 2023-07-23 19:15:18 · 241 阅读 · 0 评论 -
算法小记-减、分、变
需要注意的是,分治法、减治法和变治法并不是孤立的算法设计思想,而是相互之间可以结合使用的。在解决具体的问题时,可以根据问题的特点和复杂程度选择合适的算法设计思想,以及组合不同的算法来获得更高效的解决方案。这些例子只是分治法、减治法和变治法的一小部分应用场景,实际上它们在算法设计中的应用非常广泛。具体选择哪种算法设计思想取决于问题的性质和规模,以及所需求解的复杂程度。原创 2023-07-20 20:33:04 · 47 阅读 · 0 评论 -
算法小记-最长子序列
这样,我们可以比较nums[j]和nums[i]的大小关系,如果nums[j] < nums[i],则说明可以将nums[i]加入到以位置j结尾的递增子序列中,形成一个更长的递增子序列。如果找到了这样的位置j,说明可以将nums[i]加入到以nums[j]结尾的递增子序列中,形成一个更长的递增子序列,即dp[i] = max(dp[i], dp[j] + 1)。通过这样的遍历过程,我们可以得到每个位置的最长递增子序列长度,最后取dp数组中的最大值作为整个序列的最长递增子序列长度。原创 2023-07-18 20:59:50 · 172 阅读 · 0 评论 -
搜索算法小记-A*
A*算法是一种启发式搜索算法,用于解决最短路径问题。它综合了实际代价和估计代价,并通过启发式函数来指导搜索过程,以找到最优解。算法原理:A*算法通过计算节点的f值(f = g + h)来指导搜索过程,选择f值最小的节点进行扩展。其中,g值表示实际代价,h值表示估计代价。通过合理选择启发式函数,可以尽可能准确地估计当前节点到目标节点的代价。在农业适用场景中,A*算法可以应用于以下情况之一:例子:农田巡视和检测假设有一个大型农场,农民需要定期巡视和检测农田中的作物状况。原创 2023-06-28 10:33:36 · 87 阅读 · 1 评论 -
算法小记-冒泡、选择、希尔、快速、归并排序
快速排序的基本思想是选择一个基准元素(通常是序列中的第一个元素),将序列中小于基准元素的值放在左边,大于基准元素的值放在右边,然后对左右两个子序列分别进行快速排序,最后合并得到有序序列。归并排序(Merge Sort)也是一种常用的排序算法,同样采用分治的思想,将数组分成较小的子数组,然后对子数组进行排序,最后再将排序后的子数组合并成一个有序的数组。交换元素位置:如果两个相邻元素的顺序不正确(比较顺序为升序时,前面的元素大于后面的元素),则进行交换,将较大的元素向右移动。,即整个列表的范围。原创 2023-07-02 16:09:53 · 151 阅读 · 0 评论