2019-2020-1 20191308《信息安全专业导论》第 6 周学习总结
教材学习内容总结
由数学问题的求解策略, 分治法, 自顶向下法等思想为切入点认识算法.
试着编写伪代码, 了解数据的形式, 掌握选择, 循环, 搜索, 排序等算法, 并手动测试.
顺序搜索: 对于任意一个序列以及一个给定的元素, 将给定元素与序列中元素依次比较, 直到找出与给定关键字相同的元素, 或者将序列中的元素与其都比较完为止.
二分检索: 在有序列表中通过比较操作消除大部分检索范围.
选择排序: 第一次从待排序的数据元素中选出最小 (或最大) 的一个元素, 存放在序列的起始位置, 然后再从剩余的未排序元素中寻找到最小 (大) 元素, 然后放到已排序的序列的末尾. 以此类推, 直到全部待排序的数据元素的个数为零.
冒泡排序: 重复地走访过要排序的元素列, 依次比较两个相邻的元素, 如果顺序 (如从大到小, 首字母从从 Z 到 A) 错误就把他们交换过来, 使小的元素经由交换慢慢 "浮" 到数列的顶端.
插入排序: 每步将一个待排序的元素, 按其大小插入前面已经排序的文件中适当位置上, 直到全部插入完为止.
快速排序: 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排序过程可以递归进行, 以此达到整个数据变成有序序列.
递归算法计算阶乘以及其在排序中的应用.
教材学习中的问题和解决过程
问题 1: 有关递归算法
问题 1 解决方案: 递归算法指可以在子程序自身中出现子程序名的算法, 阶乘和二分检索实际上就是递归算法的应用.
问题 2: 递归调用和嵌套调用有什么不同?
问题 2 解决方案: 递归调用是一种特殊的嵌套调用, 是某个函数调用自己或者是调用其他函数后再次调用自己的, 只要函数之间互相调用能产生循环的则一定是递归调用.
问题 3: 子程序与嵌套结构的辨析
问题 3 解决方案: 子程序是能被其他程序调用, 在实现某种功能后能自动返回到调用程序去的程序. 其最后一条指令一定是返回指令, 故能保证重新返回到调用它的程序中去.
嵌套结构则如图
来源: http://www.bubuko.com/infodetail-3282044.html