摘要:
分治算法 1.算法设计思想 分治法求解问题的过程是,将整个问题分解成若干个小问题后分而治之。如果分解得到的子问题相对来说还太大,则可反复使用分治策略将这些子问题分成更小的同类型子问题,直至产生出方便求解的子问题,必要时逐步合并这些子问题的解,从而得到问题的解。 分治法的基本步骤在每一层递归上都有三个 阅读全文
摘要:
蛮力法 蛮力法是基于计算机运算速度快这一特性,在解决问题时采取的一种“懒惰”的策略。这种策略不经过(或者说是经过很少的)思考,把问题的所有情况或所有过程交给计算机去一一尝试,从中找出问题的解。蛮力策略的应用很广,具体表现形式各异,数据结构课程中学习的:选择排序、冒泡排序、插入排序、顺序查找、朴素的字 阅读全文
摘要:
迭代算法 迭代法(Iteration)也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。迭代算法一般用于数值计算。迭代法应该是我们早已熟悉的算法策略,程序设计语言课程中所学的累加、累乘都是迭代算法策略的基础应用。 利用迭代算法策略求解问题,设计工作主要有三步: 1)确定迭代模型 2) 阅读全文
摘要:
很简单的例子: 已知有五个数,求前四个数与第五个数分 别相乘后的最大当数。给出两个算法分别如下: 以上两个算法基于的数学模型是不同的,一个算法先积再求最大值,另一个算法先求最大值再求积,求从上表可以看出,后一个算法的效率明显要高于前一个算法。 数学建模就是把现实世界中的实际问题加以提炼,抽象为数学模 阅读全文
摘要:
【例1】一次考试,共考了五门课。统计五十个学生中至 少有三门课成绩高于90分的人数。 问题分析:若一个学生五门课的成绩分别记为:a1,a2,a3,a4,a5,则要表示有三门课成绩高于90分,有C35=10组关系逻辑表达式,每组三个关系表达式。无论书写还是运行效率都极低。但通过算法运算就能很简便地解决 阅读全文
摘要:
常用的几种数据结构 数据的逻辑结构常分为四大类: (1)集合结构 (2)线性结构 (3)树形结构 (4)图结构(网结构) 存储结构可以分为:连续存储和链式存储。连续存储又可以分为:静态存储和动态存储 连续存储和链式存储比较 顺序存储的优点: (1) 方法简单,各种高级语言中都提供数组结构,容易实现。 阅读全文
摘要:
循环设计中要注意算法的效率: 循环体的特点是:“以不变应万变”。 所谓“不变”是指循环体内运算的表现形式是不变的,而每次具体的执行内容却是不尽相同的。在循环体内用不变的运算表现形式去描述各种相似的重复运算。 【例1】求1/1!-1/3!+1/5!-1/7!+…+(-1)n+1/(2n-1)! 分析: 阅读全文
摘要:
时间复杂度估算 因为: 算法=控制结构+原操作(固有数据类型的操作) 所以: 算法的执行时间= 原操作的执行次数*原操作 语句的频度指的是该语句重复执行的次数。 一个算法转换为算法后所耗费的时间,除了与所用的计算软、硬件环境有关外,主要取决于算法中指令重复执行的次数,即语句的频度相关。 一个算法中所 阅读全文
摘要:
用计算机解决一个现实中的问题步骤: 1. 问题分析 2. 数学模型建立 3. 算法设计与选择 4.算法表示 5.算法分析 6.算法实现 7.程序调试 8.结果整理文档编制 1. 问题分析 准确、完整地理解和描述问题是解决问题的第一步。要做到这一点,必须注意以下一些问题:在未经加工的原始表达中,所用的 阅读全文