问答题 已知如下11个数据元素的有序表(6,14,19,21,36,57,63,76,81,89,93),请画出查找键值为21(成功)和85(失败)的查找过程。
【正确答案】对有序表(设有序表为A,其中某关键字为A[i].key)的查找可采用二分法进行。
   设变量low、high和mid分别表示待查有序表的下界、上界和中间位置,即:
   mid=(low+high)/2。初值low=1,high=11,具体如下:
   序号:    1    2    3  4   5   6   7   8   9   10   11
   关键字:  6    14  19  21  36  57  63  76  81  89   93
   变量:    ↑low                                     ↑high
   (1)以下给出键值key=21的查找过程:
   由初始low=1,high=11,求得mid=6,如下所示:
   序号:    1    2    3  4   5   6    7    8   9   10   11
   关键字:  6    14  19  21  36  57   63   76  81  89   93
   变量:    ↑low                ↑mid                  ↑highI
   因为A[mid].key=A[6].key>key,即57>21,所以,继续在前半区进行查找。low值不变,high=mid-1=5,mid=(1+5)/2=3。如下所示:
   序号:    1    2  3   4   5    6   7   8   9   10    11
   关键字:  6    14 19  21  36   57  63  76  81  89    93
   变量:    ↑low   ↑mid   ↑high
   又因为A[mid].key=A[3].key<key,即19<21,所以,继续在后半区进行查找。high值不变,low=mid+1=3+1=4,mid=(4+5)/2=4。如下所示:
   序号:    1   2   3    4     5    6   7   8   9   10    11
   关键字:  6   14  19   21    36   57  63  76  81  89    93
   变量:                ↑low  ↑high
                         ↑mid
   由于A[mid].key=A[4].key=21,此值与给定关键字21相等,查找成功。
   (2)以下给出键值key=85的查找过程:
   由初始low=1,high=11,求得mid=6,如下所示:
   序号:    1   2   3   4   5   6    7   8   9   10  11
   关键字:  6   14  19  21  36  57   63  76  81  89  93
   变量:    ↑low               ↑mid                ↑high
   因为A[mid].key=A[6].key<key,即57<85,所以,继续在后半区进行查找。high值不变,low=mid+1=7,mid=(7+11)/2=9。如下所示:
   序号:   1    2   3   4   5   6   7   8    9   10  11
   关键字: 6    14  19  21  36  57  63  76   81  89  93
   变量:                            ↑low    ↑mid   ↑high
   又因为A[mid].key=A[9].key<key,即81<85,所以,继续在后半区进行查找。high值不变,low=mid+1=10,mid=(10+11)/2=10。如下所示:
   序号:    1   2   3   4   5   6   7   8   9   10    11
   关键字:  6   14  19  21  36  57  63  76  81  89    93
   变量:                                        ↑low  ↑high
                                                 ↑mid
   因为A[mid].key=A[10].key>key,即89>85,所以,继续在前半区进行查找。low值不变,high=mid-1=10-1=9,mid=(10+9)/2=9。如下所示:
   序号:    1    2   3   4   5   6   7   8   9     10    11
   关键字:  6    14  19  21  36  57  63  76  81    89    93
   变量:                                    ↑high ↑low
                                             ↑mid
   此刻,由于下界low>上界high,说明表中没有关键字值等于85的元素,查找失败。
【答案解析】