今天听到一个词,叫折中查询(java中),请教下折中查询是什么意思,能举例说明下最好
答案:2 悬赏:30 手机版
解决时间 2021-03-18 18:40
- 提问者网友:温旧梦泪无声
- 2021-03-17 20:12
今天听到一个词,叫折中查询(java中),请教下折中查询是什么意思,能举例说明下最好
最佳答案
- 五星知识达人网友:大漠
- 2021-03-17 20:50
折中查询也叫折半查询,是一种查询方法,折中查询方法针对的是已经排好序的数列来说!
例如:有一组有序数列:3,6,8,10,20,23,28
现在让你用算法实现看看次数列中有没有15.。一般的方法是将数列中的数一个一个的跟15比较,直到结尾,这样要比较7次才能得出结果!
折中查询是这样的:
这是一个已经排好序的数列,所以找到这个数列中间位置的那个数,这里是10,用10跟15比较,发现要找的15比10大,所以10前面的数你就不用管了,只去10后面的数里面找,只剩:20,23,28了,看看有没有15,在10后面的数里,再找当中的那个数,这里是23,23要比15大,所以在去10到23之间里面找,15跟23里面已经没有数了,所以这个数列里面没有15.这种方法得出没有15的结果只做了2次比较,省事多了!
例如:有一组有序数列:3,6,8,10,20,23,28
现在让你用算法实现看看次数列中有没有15.。一般的方法是将数列中的数一个一个的跟15比较,直到结尾,这样要比较7次才能得出结果!
折中查询是这样的:
这是一个已经排好序的数列,所以找到这个数列中间位置的那个数,这里是10,用10跟15比较,发现要找的15比10大,所以10前面的数你就不用管了,只去10后面的数里面找,只剩:20,23,28了,看看有没有15,在10后面的数里,再找当中的那个数,这里是23,23要比15大,所以在去10到23之间里面找,15跟23里面已经没有数了,所以这个数列里面没有15.这种方法得出没有15的结果只做了2次比较,省事多了!
全部回答
- 1楼网友:酒醒三更
- 2021-03-17 22:25
public class testsort> {
private o[] data;
public testsort(o[] data)
{
this.data = data;
}
public int sortbyreturn(int low, int high, o value)
{
int mid = (low+high)/2;
if(value.compareto(data[mid])<0)
{
high = mid -1;
return sortbyreturn(low,high,value);
}else if(value.compareto(data[mid])>0)
{
low = mid + 1;
return sortbyreturn(low,high,value);
}else
{
return mid;
}
}
public int sortbywhile(o value)
{
if(value==null)
{
return 0;
}
int low = 0;
int high = data.length-1;
int mid ;
while(low<=high)
{
mid = (high+low)/2;
if(value.compareto(data[mid])<0)
{
high = mid-1;
}else if(value.compareto(data[mid])>0)
{
low = mid+1;
}else if(value.compareto(data[mid])==0)
{
return mid;
}
}
return -1;
}
public static void main(string[] args)
{
integer data[] = {1,2,5,7,9,33,43,45,66,78,93};
testsort ts = new testsort(data);
system.out.println("sort by while:"+ts.sortbywhile(5));
system.out.println("sort2 by while:"+ts.sortbyreturn(0,data.length-1,33));
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯