- 57
- 0
- 约1.42万字
- 约 27页
- 2019-06-02 发布于浙江
- 举报
PAGE / NUMPAGES
第二章 算法入门
由于时间问题有些问题没有写的很仔细,而且估计这里会存在不少不恰当之处。另,思考题 2-3 关于霍纳规则,有些部分没有完成,故没把解答写上去,我对其 c 问题有疑问,请有解答方法者提供 个意见。
给出的代码目前也仅仅为解决问题,没有做优化,请见谅,等有时间了我再好好修改。
插入排序算法伪代码
INSERTION-SORT(A)
1 for j ← 2 to length[A]
2 do key ←A[j]
3 Insert A[j] into the sorted sequence A[1..j-1]
4 i ←j-1
5 while i 0 and A[i] ??????
6 do A[i+1]←A[i]
7 i ← i ? 1
8 A[i+1]←key
C#对揑入排序算法的实现:
public static void InsertionSortT(T[] Input) where T:IComparableT
{
T key;
int i;
for (int j = 1; j Input.Length; j++)
{
key = Input[j];
i = j - 1;
for (; i = 0 Input[i].CompareTo(key)0;i-- ) Input[i + 1] = Input[i];
Input[i+1]=key;
}
}
揑入算法的设计使用的是增量(incremental)方法:在排好子数组A[1..j-1]后,将
元素A[ j]揑入,形成排好序的子数组A[1..j]
这里需要注意的是由于大部分编程语言的数组都是从0开始算起,这个不伪代码认为
的数组的数是第1个有所丌同,一般要注意有几个关键值要比伪代码的小1.
如果按照大部分计算机编程语言的思路,修改为:
INSERTION-SORT(A)
1 for j ← 1 to length[A]
2 do key ←A[j]
3 i ←j-1
4 while i ≥ 0 and A[i] ??????
5 do A[i+1]←A[i]
6 i ← i ? 1
7 A[i+1]←key
循环丌变式(Loop Invariant)是证明算法正确性的一个重要工具。对于循环丌变式,
必须证明它的三个性质:
初始化(Initialization):它在循环的第一轮迭代开始之前,应该是正确的。
保持(Maintenance):如果在循环的某一次迭代开始之前它是正确的,那么,在下
一次迭代开始之前,它也是正确的。
终止(Termination):当循环结束时,丌变式给了我们一个有用的性质,它有助于表
明算法是正确的。
运用循环丌变式对插入排序算法的正确性进行证明:
初始化:j=2,子数组 A[1..j-1]只包含一个元素 A[1],显然它是已排序的。
保持:若 A[1..j-1]是已排序的,则按照大小确定了插入元素 A[ j]位置之后的数组 A[1..j]
显然也是已排序的。
终止:当 j=n+1 时,退出循环,此时已排序的数组是由 A[1],A[2],A[3]…A[n]组成的
A[1..n],此即原始数组 A。
练习
3141592641582.1-1:以图 2-2 为模型,说明 INSERTION-SORT 在数组 A=31,41,59,26,41,58上的 执
31
41
59
26
41
58
31
41
59
26
41
58
31
41
59
26
41
58
26
31
41
59
41
58
26
31
41
41
59
58
26
31
41
41
58
59
2.1-2:重写过程 INSERTION-SORT,使之按非升序(而丌是按非降序)排序。
INSERTION-SORT(A)
1 for j ← 2 to length[A]
2 do key ←A[j]
3 Insert A[j] into the sorted sequence A[1..j-1]
4 i ←j-1
5 while i 0 and A[i] ??????
6 do A[i+1]←A[i]
7 i ← i ? 1
7 A[i+1]←key
2.1-3:考虑下面的查找问题:
输入:一列数 A=a1 ,a2 ,…,an 和一个值 v
输出:下标 i,使得 v=A[i],戒者当 v 丌在 A 中出现时为 NIL。
写出针对这个问题的现行查找的伪代码,它顺序地扫描整个序列以查找 v。利用循 环丌变式证明算法的正确性。确保所给出的循环丌变式满足三个必要的性质。
LINEAR-SEARCH(A,v)
1 for i ← 1 to length[A]
2 if v=A[i]
3 return
您可能关注的文档
- 医院验收汇报.ppt
- 医院医用织物洗涤消毒技术规范解读.ppt
- 苏教版第十册语文《大江保卫战》课件.ppt
- 苏教版化学:2.1.2《化学反应的限度》.ppt
- 未来版品德与社会四下《家乡的发展变化》课件.ppt
- 医院应急管理与专项预案培训.ppt
- 苏教版三年级科学认识液体.ppt
- 医院知识管理系统.ppt
- 心梗病人护理查房.ppt
- 胃癌病人的护理 (课件).ppt
- 人教版八年级上册历史精品教学课件 第六单元 中华民族的抗日战争 第17课 七七事变与全民族抗战 (6).ppt
- 人教版八年级上册历史精品教学课件 期末专题复习 专题二 中国人民近代化的探索 (2).ppt
- 人教版八年级上册历史精品教学课件 第二单元 近代化的早期探索与民族危机的加剧 第5课 甲午中日战争与列强瓜分中国狂潮 (2).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 大概念引领下的大单元复习 (4).ppt
- 人教版八年级上册历史精品教学课件 第七单元 人民解放战争 第21课 人民解放战争的胜利 (2).ppt
- 人教版八年级上册历史精品教学课件 第三单元 资产阶级民主革命与中华民国的建立 第10课 中华民国的创建 (2).ppt
- 人教版八年级上册历史精品教学课件 第四单元 新民主主义革命的开始 第12课 新文化运动 (3).ppt
- 第四组塑料低温脆化温度测试详解演示文稿.ppt
- 第消费者行为演示文稿.ppt
- 第一部分用搜索方法求解问题演示文稿.ppt
原创力文档

文档评论(0)