Q8-1 算法的正式定义是什么?
A:算法定义为一组明确步骤的有序集合,它产生结果并在有限的时间内终止。
Q8-2 给出用于结构化程序设计中的三种结构的定义。
A:顺序:简单的指令序列
判断(选择):有时需要检测一个条件是否满足,假如测试的结果为真,则可以继续顺 序往下执行指令;假如结果为假,程序将从另外一个顺序结构的指令继续执行。
循环:重复执行相同的指令序列
Q8-3 UML图与算法有何关系?
A:UML图:统一建模语言,使用“大图”的形式掩盖了算法的所有细节,只显示算法从开始 到结束的整个流程
Q8-4 伪代码与算法有何关系?
A:伪代码:伪代码是算法所需的一种类似英语的代码表示形式,是部分英语与部分结构化代 码的组合。
Q8-5 排序算法的用途是什么?
A:根据数据的值对他们进行排序,将无序的数据变为有序,方便查找信息
Q8-6 本章有哪三种基本排序算法?
A:选择排序算法、冒泡排序算法、插入排序算法
Q8-7 查找算法的用途是什么?
A:在一组对象中确定目标所在位置
Q8-8 本章讨论的基本查找算法主要有哪两种?
A:顺序查找、折半查找
Q8-9 给出迭代过程的定义和一个例子。
A:任何时候只要算法的定义不涉及算法本身,它就是迭代的
Q8-10 给出递归过程的定义和一个例子。
A:任何时候只要算法出现在它的定义中,算法就是递归定义的
P8-1
P8-2
P8-3
P8-4
P8-5
P8-6
P8-7
P8-8
P8-9
P8-10
P8-11
P8-12
P8-13
P8-14
P8-15
P8-16
P8-17
P8-18 a. gcd(7,41) = 6; b. gcd(12,100) = 4; c. gcd(80,4) = 4; d. gcd(17,29) = 1;
P8-19
P8-20 a. C(3,2) = 3; b. C(5,5) = 1; c. C(2,7) 未定义 ; d. C(4,3) = 4;
P8-21
P8-22 a. Fib(2) = 1; b. Fib(3) = 2; c. Fib(4) = 3; d. Fib(5) = 5;
P8-23
P8-24 有空再补
P8-25
P8-26 有空再补
P8-27
P8-28
Algorithm:Sum(list)
Purpose:It finds the sum of integers
Pre:Given:A list of integers
Post:None
Return:Sum of the integers
{
sum ← 0
while (more integer to add)
{
get next integer
sum ← sum + (next integer)
}
return sum
}
P8-29
P8-30 有空再补
P8-31
P8-32 有空再补
P8-33
P8-34 有空再补
P8-35
P8-36
Algorithm:SequentialSearch(list,target,n)
Purpose:Apply sequential search a list of n sorted numbers
Pre:list,target,n
Post:None
Return:flag,i //flag shows the status of the search (true if target found, false if not)
{
flag ← false
i = 1
while(i ≤ n)
{
if(target = Ai)
flag ← true
retuen(flag,i)
else
i++
}
return(flag)
}
// If flag is false, not found
// If flag is true, i is the location of the target
P8-37
P8-38
P8-39