二分法查找算法填空

2024-12-22 22:47:38
推荐回答(3个)
回答1:

j=r.length-1 //初始时,i和j为整个数组最小和最大的下标;
m=(i+j)/2 //m的值取i和j的中间数;
return m //如果这个k值等于m,则返回这个m值;
j=m-1 //否则如果这个k值小于m,则k只能出现在i到m-1之间;
i=m+1 //否则如果这个k值大于m,则k只能出想在m+1到j之间

回答2:

typedef dtruct
{
int key;//关键字
float info;//其它域
}elem;
int binarysearch(elem r[],int n,int k)
{
int i,j,m;
i=0;
j=____n____; //填写n吧,既然是二分自然是 首尾 在一起逐渐缩小空间
while(i<=j)
{
m=__(i+j)/2___; //填写n吧,既然是二分自然是要取中点啦
if(k==r[m].key)
__return m ; // 找到了,返回值吧,就是m的值了
else if(kj=_m_; //k值小于当前中间元素。这个要根据数组的排序情况来看,如果是从小到大排列的话就是较大的那个部分缩进
else
i=_m_; //i值缩进
}
return(-1);

回答3:

j=r.length-1;
m=(i+j)/2;
return m;
j=m;
i=m;