博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找和变形问题
阅读量:4135 次
发布时间:2019-05-25

本文共 1673 字,大约阅读时间需要 5 分钟。

/** * 二分查找,等于某个值的位置,非递归 * @param data */public static int binarySearch1(int[] data,int val){    if(data == null || data.length ==0){        return -1;    }    int low = 0;    int high = data.length;    while (low <= high){        int midden = low+((high - low)>>1);        if(data[midden]>val){            high = midden -1;        }else if(data[midden]
high) return -1; int midden = low +((high-low)>>1); if(data[midden]>val){ return searchInternally(data,low,midden - 1,val); }else if(data[midden]
>1); if(data[midden]>val){ high = midden -1; }else if(data[midden]
>1); if(data[midden]>val){ high = midden - 1; }else if(data[midden]
>1); if(data[midden]>=val){ if(midden == 0 || data[midden - 1]
>1); if(data[midden]<= val){ if(midden == high || data[midden+1]>val)return midden; }else { high = midden - 1; } } return -1;}public static void main(String[] args) { int[] data = {1,2,3,4,5,6,7,8,9}; int val = 4; int position = binarySearch1(data,val); System.out.println(val+" 的位置为:"+position); System.out.println(val+" 的位置为:"+searchInternally(data,0,data.length,val)); int[] data2 = {1,2,3,4,5,5,5,6}; val = 5; System.out.println("第一个 "+val+" 出现的位置为:"+searchFirstVal(data2,val)); System.out.println("最后一个 "+val+" 出现的位置为:"+searchLastVal(data2,val)); int[] data3 = {1,2,3,4,6,7}; val = 5; System.out.println("第一个大于或等于 "+val+" 出现的位置为:"+searchGtEVal(data3,val)); val = 7; System.out.println("最后一个小于或等于 "+val+" 出现的位置为:"+searchGtEVal(data3,val));}

转载地址:http://bhsvi.baihongyu.com/

你可能感兴趣的文章
Observer模式
查看>>
Iterator模式
查看>>
E - Olympic Medal CodeForces - 215B(数学 思维)
查看>>
codeforces1073D. Berland Fair
查看>>
codeforces 1073B. Vasya and Books
查看>>
Queue at the School CodeForces - 266B
查看>>
A - Average distance HDU - 2376(树形)
查看>>
B - Adding Digits CodeForces - 260A
查看>>
Party at Hali-Bula POJ - 3342(树形dp)
查看>>
E - Balls and Boxes CodeForces - 260C(思维)
查看>>
A - Anniversary party HDU - 1520(没有上司的舞会)
查看>>
B - Greg's Workout CodeForces - 255A(思维)
查看>>
E - Code Parsing CodeForces - 255B(思维)
查看>>
D - Undoubtedly Lucky Numbers CodeForces - 244B(数论 )
查看>>
Minimal coverage(贪心 区间覆盖)
查看>>
Query on a tree HDU - 3804(线段树求区间最大+树链剖分)
查看>>
dB,dBi, dBd, dBc,dBm,dBw的区别
查看>>
拓扑排序
查看>>
有向无权图最短路径问题——BFS求解
查看>>
关于程序的运算时间复杂度的一点思考
查看>>