三、排序算法和设计模式
本阶段的目的:
理解软件设计的本质和内涵,学习前人总结出的精华,
侧重点
对排序以及算法进行学习,给其他人输出,对于23种设计模式进行分类学习并理解各自的特点,都要落实到图(UML图)和代码上
涉及的学习方法(最后有如何使用这些方法)
二维表结构化、分享给他人(学习金字塔)、小组讨论、问题是最好的老师
学习结果
创建型模式结构型模式 行为型模式
算法-贪心法求最大子数组的和
给你一个整数数组 ,请你找出一个具有的连续子数组最大和(子数组最少包含一个元素),返回其最大和。
注意:子数组是数组中的一个连续部分。
nums = [-2,1,-3,4,-1,2,1,-5,4]
public class Greedy_tanxin { public static int maxSubArray(int[] nums) { int sum = 0; // 记录当前连续子数组的和 int maxSum = nums[0]; // 记录最大子数组和,初始化为第一个元素 for (int i = 0; i < nums.length; i++) { sum =sum+ nums[i]; // 将当前元素加入连续子数组 if (sum > maxSum) { // 如果当前连续子数组和大于最大子数组和,则更新最大子数组和 maxSum = sum; System.out.println("maxSum: " + maxSum); } if (sum < 0) { // 如果当前连续子数组和小于0,则将当前连续子数组清空,从下一个元素开始重新构建连续子数组 sum = 0; } } return maxSum; } public static void main(String[] args) { int[] arr = {-2,1,-3,4,-1,2,1,-7,4}; int max_sum=maxSubArray(arr); System.out.println("最后结果为: "+max_sum); } }
其中部分排序和算法的代码已上传CSDN资源供大家学习,有需要的同学可以自取,链接如下:
部分排序和算法代码资源
我也总结了相应的博客,欢迎大家前来访问哦
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(上)
八大排序算法-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序、基数排序(下)
遇到的问题
其中对于各个设计模式之间的区别和联系不是很明确,并且设计模式的使用场景会混淆。
这一点,大家可以根据不同的设计模式自己想一个符合的小故事进行结构化
四、历年真题训练
本阶段的目的:
找到考试的感觉,通过昨天补充漏掉的知识点,熟悉各种题型
侧重点
认真对待每一套真题,把每次做真题都要当作一次考试。
每做完一套题,必须认真分析题,记录自己错过的题(尤其是哪些反复错过的题)以及它所涉及的知识点,还有难点和易错点,结合书本查漏补缺,针对错题,易错点,难点强化练习,突破难点,找回自信,逐步突破每个难点,让软考变得容易。其实分析题比做题更重要。并且把每次做的答案保留下来,通过数据来分析自己经常出错的地方。分析最近几年的考试的类型,尤其是下午题的设计模式、算法。
建议大家做真题的顺序都是从旧到新,挨着来,一直做到最新的,目的在于体会题型的变化。这样能体会到题型的变化,不用怕专项复习的时候做过了,重新再做一遍一样会有新的收获。
涉及的学习方法(最后有如何使用这些方法)
二维表结构化、给他人讲题(学习金字塔)、小组讨论、问题是最好的老师、总结并分享解题技巧
小组主要讨论一些非理论的,共性大的错误,分享解题技巧。
学习结果
用到的软件有APP:希赛软考助手、软考真题;小程序:51cto题库、软考刷题王。
每个程序都有自己的特点,我用的最多的还是希赛软考助手,每道题下面有老师回复同学的解题思路或问题,站在巨人肩膀上!
这一阶段必须要将答案写下来,准备一个笔记本进行总结,或记录到文档里。
遇到的问题
之前考过了数据结构导论,对于图、表这块学的还可以,在学软考的时候没有全面的复习,漏掉了一些知识点,做真题时也有没有遇到的题型,导致在考下午题的时候,第四题算法题考到了一个邻接表的问题,不出意外的话,一定会出意外!所以复习要全面一些。
我们需要超越自己的舒适区,去尝试新的事物和挑战自己的能力。这样才能不断地提升自己的能力和水平,也才能更好地适应未来的变化和挑战。
总结
学习计划安排
1、计划一定要提前做,可以使用表格或甘特图的形式,以每月每周为大目标,每周细致到每天和每小时
2、使用PDCA的方法,根据上一周期检查出的问题针对性改进完善下周期的计划,良性的循环
3、使用番茄时间工作法,每25分钟一番茄,休息5分钟,科学有效!
备考过程中的学习方法
1、三遍读书法
2、番茄时间工作法
3、PDCA循环
4、小组学习 + 问题是最好的老师!+ 教是最好的学!(学习金字塔)
5、多维度结构化:形式为二维表或思维导图,从不同里找相同点,从相同点里找不同点,结合上之前学过的知识
6、思想上移,行动下移:行动下移体现在如学习设计模式和算法时,落实到代码和UML图上
科学的学习方法+自信+脚踏实地=成功!