java折中算法代码 java常量折叠

今天听到一个词,叫折中查询(java中),请教下折中查询是什么意思,能举例说明下最好

折中查询也叫折半查询,是一种查询方法,折中查询方法针对的是已经排好序的数列来说!

创新互联建站长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为顺德企业提供专业的成都网站建设、网站制作,顺德网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

例如:有一组有序数列: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次比较,省事多了!

java递归实现折中算法

public class TestSortO extends ComparableO {

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;

}

}

/**

* 循环折中算法

* @param args

*/

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};

TestSortInteger ts = new TestSortInteger(data);

System.out.println("sort by while:"+ts.sortByWhile(5));

System.out.println("sort2 by while:"+ts.sortByReturn(0,data.length-1,33));

}

}

java中基数排序算法代码

/**  

* 冒泡法排序br/  

* li比较相邻的元素。如果第一个比第二个大,就交换他们两个。/li  

* li对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。/li  

* li针对所有的元素重复以上的步骤,除了最后一个。/li  

* li持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。/li  

*   

* @param numbers  

*            需要排序的整型数组  

*/  

public static void bubbleSort(int[] numbers) {   

int temp; // 记录临时中间值   

int size = numbers.length; // 数组大小   

for (int i = 0; i  size - 1; i++) {   

for (int j = i + 1; j  size; j++) {   

if (numbers[i]  numbers[j]) { // 交换两数的位置   

temp = numbers[i];   

numbers[i] = numbers[j];   

numbers[j] = temp;   

}   

}   

}   

}

新手用java算法求2的16次方的值

public class Test{

public static void main(String[] args){

int n = get(2,16);    //2的16次方

System.out.println(n);    

}

public static int get(int a,int y){    

int sum = 1;

for(int x = 1;x=y;x++){

sum = sum*a;

}

return sum;

}

}


分享名称:java折中算法代码 java常量折叠
网址分享:http://myzitong.com/article/dopoedd.html