【答案解析】(1)1 (2)2 (3)m (4)D[m+1]
(5)m←m+1,或其等价表示
[分析]
本题涉及信息处理工作中常用的算法。动态收集得到的一批记录中,常包含有某些重复的记录。在做进一步处理前,应当删除这些重复记录。所谓重复记录,通常是指那些具有相同关键词的记录。注意,从经验上看,重复记录往往出现在比较临近的记录中。为了删除重复记录,可以采用本题中的算法思想。
对于题中给出的例子,该算法执行的动态情况如下表:
|
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
D8 |
D9 |
D10 |
|
5 |
2 |
2 |
7 |
4 |
4 |
7 |
1 |
9 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
5 |
2 |
7 |
4 |
1 |
9 |
|
|
|
|
具体做法如下:
逐个考查D
1,D
2,…,D
10的内容。
首先,保留D
1中的内容5,将其作为已经选出的不重复数据,此时m应是1。
考查D
2时,将其与D
1进行比较,发现不同,所以保留,形成不重复数据D
1、D
2,此时m=2。
考查D
3时,分别将其与D
2、D
1进行比较,发现有重复,不做处理。
考查D
4时,分别将其与D
2、D
1进行比较,发现不同,将D
4的内容放到D
3中,形成不重复数据D
1、D
2、D
3,此时m=3。
考查D
5时,分别将其与D
3~D
1进行比较,发现不同,将D
5的内容放到D
4中,形成不重复数据D
1~D
4,此时m=4。
考查D
6时,分别将其与D
4~D
1进行比较,发现有重复,不做处理。
考查D
7时,分别将其与D
4~D
1进行比较,发现有重复,不做处理:
考查D
8时,分别将其与D
4~D
1进行比较,发现不同,将D
8的内容放到D
5中,形成不重复数据D
1~D
5,此时m=5。
考查D
9时,分别将其与D
5~D
1进行比较,发现不同,将D
9的内容放到D
6中,形成不重复数据D
1~D
6,此时m=6。
考查D
10时,分别将其与D
6~D
1进行比较,发现有重复,不做处理。
考查结束,形成不重复数据D
1~D
6,此时m=6。
对于一般的情况,就要逐个考查D
1,D
2,…,D
n的内容。
首先保留D
1中的内容,作为已选出的不重复数据,此时设置m=1。
对于已经选出的不重复数据D
1,D
2,…,D
m,考查D
i(m<i≤n),将其与D
m,D
m-1,…,
D
1逐一比较。若发现有重复,则不做处理;发现完全不同时,应将Di的内容放入D
m+1,然后,将m增加1。
注意,在考查D
i时,由于重复数据离它更近些,将其与D
m,D
m-1,…,D
1逐一比较可以节省时间;若与D
1,D
2,…,D
m逐个比较,发现重复的时间会比较长一些。对于程序员来说,能在细节处适当考虑程序的效率也是好的。
因此,在本题的流程图中,(1)处应填1,表示初始时设置m=1。
对于/2个数据(n>1)而言,接着应逐个考查D[2],…,D[n]的内容,因此循环应对i=2,n,1进行,所以(2)处应填2。
考查D[i]时,需要将其分别与D[m],D[m-1],…,D[1]逐一比较,所以循环应对,j=m,
1,-1进行,从而(3)处应填m。
若在比较过程中发现重复,则直接返回主程序(不做处理);若始终没有发现重复数据,则应将D[i]存入D[m+1],所以(4)处应填D[m+1]。然后,应将重复数据数目加
1,所以(5)处应填m←m+1(或m+1→m)。