软件设计师——数据结构与算法应用 [ 笔记 ]

┏┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆
┇ 根据B站视频以及教材做的笔记 ╹◡╹
┇ 视频:https://www.bilibili.com/video/av19665344
┇ 教材:软件设计师考试冲刺(习题与解答)
┗┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅☆

课程内容提要

在这里插入图片描述

分治法

  • 分治法:把一个比较大而复杂的问题拆分成多个规模较小的子问题,解决问题的难度降低很多。
  • 往往需要 递归 技术解决问题。
    分治法

递归技术

递归技术

二分查找法

二分查找法

回溯法

回溯法:深度优先的搜索法。
回溯法

贪心法

  • 贪心法:花有限的时间找出一个令人满意的解,这个解不一定是最优解。性价比方案。
  • 在揹包问题中,单位物品价值越高,越优先选。
    贪心法

动态规划法

动态规划法:与分治法相似,将原问题拆分成多个子问题。不同点在于动态规划法基本需要查表。
动态规划法

试题

例15-1-1
例15-1-2
例15-1-3
例15-1-4
【问题1】
(1) j = 0;
(2) b [ j ] = b [ j ] + s [ i ];
(3) min = temp;
(4) b [ m ] = b [ m ] + s [ i ]。
例15-1答案3
【问题2】
整个时间复杂度以最高的为准。
(5) 贪心法 ;(6) 贪心法 ;(7) O(n2);(8)O(n2)。
例15-1答案2
【问题3】
最优适宜策略仅局部达到最优,整体不一定达到最优。
(9) 5 ;(10) 4 ;(11) 否 。
例15-1答案1

例15-2-1
例15-2-2
例15-2-3
例15-2-4
【问题1】
(1) k<=r;
(2) arr [ k ] = right [ j ];
(3) begin<end;
(4) mergeSort(arr,mid+1,end)。
【问题2】
由于该题使用了归并排序,且拆分成两个子数组,分别排序后再合并起来。所以采用了分治法的算法设计策略。
时间复杂度为O(nlogn)。
空间复杂度为O(n)。
(5) 分治法;(6) T(n)=2T(n/2)+O(n);(7) O(n)。
【问题3】
(9) n1+n2

发布了48 篇原创文章 · 获赞 18 · 访问量 5356
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章