精通cobol--9.8.1 可用于二分查找的表的特征
2008-04-28 09:52
323 查看
不同于顺序查找方式,二分查找方式对表中数据的位置有着严格的要求。表中数据的排列必须有序,可以为升序,也可以为降序。
下面,以学生成绩管理系统为例,提取简化模型,定义表的结构如下。
01 STUDENT-REPORT-TABLE.
05 REPORT OCCURS 8 TIMES. /*设共有8门课的成绩*/
10 SUBJECT-CODE PIC 9。 /*课程编号*/
10 SUBJECT-NAME PIC X(10). /*课程名称*/
10 MARK PIC 99. /*分数*/
对应于以上定义的表,显然SUBJECT-CODE应作为数据编号。SUBJECT-NAME 和MARK都是该数据编号对应的一组相关数据。
为了能够进行二分查找,表中数据排列必须有序。这里所说的有序,实际上指的应该是表中数据编号要么从大到小,要么从小到大。因为单纯的数据,如考试科目名称SUBJECT-NAME,是无所谓大小的,也就无法进行排序。
定义完成之后,仍然需要对表初始化。此时,便不能同顺序查找方式一样,对表中数据任意进行初始化了。为实现二分查找,数据编号SUBJECT-CODE必须有序。因此,初始化后的表其内部数据通常应该如表所示。
表 学生成绩表1
这里,课程编号是SUBJECT-CODE从1~8是有序的。由于本表中课程编号即为数据编号,数据编号的有序即表明数据的有序。因此,该表可以用于二分查找。
可以看到,以上初始化后的表,表中数据为升序排列。由于对于二分查找方式而言,只要表中数据有序排列就可以了,而不论升序还是降序。因此,以下将初始化数据进行降序排列的方式也是正确的。表内数据如表所示。
表 学生成绩表2
此外,以上两张表将数据编号都设为了一组连续数字。在没有特别要求的情况下,通常为方便起见,数据编号最好指定为连续数字。当然,根据用于二分查找方式表的要求说明,数据只要有序就行了,而不一定非要连续。故下面这组数据按照习惯虽不常用,但仍然是正确的。相应数据如表所示。
表 学生成绩表3
下面,以学生成绩管理系统为例,提取简化模型,定义表的结构如下。
01 STUDENT-REPORT-TABLE.
05 REPORT OCCURS 8 TIMES. /*设共有8门课的成绩*/
10 SUBJECT-CODE PIC 9。 /*课程编号*/
10 SUBJECT-NAME PIC X(10). /*课程名称*/
10 MARK PIC 99. /*分数*/
对应于以上定义的表,显然SUBJECT-CODE应作为数据编号。SUBJECT-NAME 和MARK都是该数据编号对应的一组相关数据。
为了能够进行二分查找,表中数据排列必须有序。这里所说的有序,实际上指的应该是表中数据编号要么从大到小,要么从小到大。因为单纯的数据,如考试科目名称SUBJECT-NAME,是无所谓大小的,也就无法进行排序。
定义完成之后,仍然需要对表初始化。此时,便不能同顺序查找方式一样,对表中数据任意进行初始化了。为实现二分查找,数据编号SUBJECT-CODE必须有序。因此,初始化后的表其内部数据通常应该如表所示。
表 学生成绩表1
SUBJECT-CODE | SUBJECT-NAME | MARK |
1 | Politics | 88 |
2 | Math | 93 |
3 | Chinese | 86 |
4 | English | 78 |
5 | Physics | 73 |
6 | Chemistry | 75 |
7 | Biology | 82 |
8 | Geography | 85 |
可以看到,以上初始化后的表,表中数据为升序排列。由于对于二分查找方式而言,只要表中数据有序排列就可以了,而不论升序还是降序。因此,以下将初始化数据进行降序排列的方式也是正确的。表内数据如表所示。
表 学生成绩表2
SUBJECT-CODE | SUBJECT-NAME | MARK |
8 | Politics | 88 |
7 | Math | 93 |
6 | Chinese | 86 |
5 | English | 78 |
4 | Physics | 73 |
3 | Chemistry | 75 |
2 | Biology | 82 |
1 | Geography | 85 |
表 学生成绩表3
SUBJECT-CODE | SUBJECT-NAME | MARK |
2 | Politics | 88 |
5 | Math | 93 |
8 | Chinese | 86 |
10 | English | 78 |
12 | Physics | 73 |
15 | Chemistry | 75 |
21 | Biology | 82 |
34 | Geography | 85 |
相关文章推荐
- 精通cobol--9.6.1 如何定义用于直接查找的表
- 精通cobol--9.8.2 如何进行二分查找方式
- 精通cobol--9.8.3 二分查找方式的好处
- 精通cobol--9.6 直接查找方式
- 精通cobol--9.8 二分查找方式
- 精通cobol--9.14 查找索引表语句SEARCH ALL
- 精通cobol--9.6.2 如何进行直接查找
- 精通cobol--9.6.3 对查找数据的处理
- 精通cobol--9.9 三种查找方式的比较和总结
- 精通cobol--9.6.4 直接查找方式的适用范围
- 具有增删改 O(1)复杂度的和查找O(lg)复杂度的特定容器--用于特定特征的数据
- 精通cobol--9.7 顺序查找方式
- 精通cobol--9.9.2 具体查找过程
- 精通cobol--9.13 查找索引表语句SEARCH
- 精通cobol--9.9.4 查找方式小结
- Java实现-二分查找
- 第三周作业——顺序查找和二分查找
- 二分查找
- 二分查找的时间复杂度计算
- 二分查找