首页 > 试题广场 >

下列算法是利用折半查找算法在一个有序表中插入一个元素x,并保

[问答题]

下列算法是利用折半查找算法在一个有序表中插入一个元素x,并保持表的有序性。请将程序中空白处填上适当的语句完成功能。


Int bininsert (sqlist   r, int   x, int   n)   //将x插入到r([..n]中并保持其有序性
{ int   low=1, high=n, mid, flag=l,   pos,i;   //插入的位置为pos
while(   (1)   &&flag)
{     mid= (low + high )/2;
        if(x <r[mid].key)   (2)    
else    if(x> r[mid].key (3)    )
          else   flag=0;}
if(!flag)   pos=mid;
else        pos=low;
for (i=n; i>=pos;i--)
          (4)        
r[pos].key=x;
}


(1)low<=high
(2)high=mid-1;
(3)low=mid+1;

(4)r[i+1].key=r[i].key;

发表于 2018-09-23 15:12:53 回复(0)
先判断查找的值是否在有序数列中 求中间值mid ,数列被分为两办 若果关键字得值小于mid,再求左边数列的mid 若果关键字的值大于mid.求右边数列的mid 如果关键的值==mid,则退出,并记录位置pos 将数列从pos开始直至原数列末尾,最后一个数据依次往后移动一个位置,最后在pos位置插入关键字的值
发表于 2018-09-03 15:12:54 回复(0)