二分法查询(数组)
2014-02-19 09:38
232 查看
public class A{
public static void main
(String [] args)
{
int arr[]={1,2,5,6,8,9,56,84};
int i=56;
print(arr);
System.out.println(binarySearch(arr,i));
}
public static void print(int arr[]){
for (int k=0;k<arr.length
;k++ )
{
System.out.print(arr[k]+"
");
}
System.out.println();
}
public static int binarySearch(int arr[],int i){
int starPos=0;
int endPos=arr.length-1;
int mid=(starPos+endPos)/2;
if(arr.length==0)
{
return -1;
}
while(starPos<=endPos){
if(i==arr[mid]){
return mid;
}
if(i>arr[mid]){
starPos=mid+1;
}
if(i<arr[mid]){
endPos=mid-1;
}
mid=(starPos+endPos)/2;
}
return -1;
}
}
public static void main
(String [] args)
{
int arr[]={1,2,5,6,8,9,56,84};
int i=56;
print(arr);
System.out.println(binarySearch(arr,i));
}
public static void print(int arr[]){
for (int k=0;k<arr.length
;k++ )
{
System.out.print(arr[k]+"
");
}
System.out.println();
}
public static int binarySearch(int arr[],int i){
int starPos=0;
int endPos=arr.length-1;
int mid=(starPos+endPos)/2;
if(arr.length==0)
{
return -1;
}
while(starPos<=endPos){
if(i==arr[mid]){
return mid;
}
if(i>arr[mid]){
starPos=mid+1;
}
if(i<arr[mid]){
endPos=mid-1;
}
mid=(starPos+endPos)/2;
}
return -1;
}
}
相关文章推荐
- [code]二分法:从已排好序的String数组中查询要搜索的字符串的下标
- 有序数组用二分法查询位置
- 有序数组的二分法查询、删除、插入java代码
- 【bzoj5173】[Jsoi2014]矩形并 扫描线+二维树状数组区间修改区间查询
- php数组二分法查找
- java 数组插入,二分法
- MongoDB 数组查询
- hdu 3584 Cube (三维树状数组,更新区间,查询单点)
- [示例]NSPredicate基础-查询数组中负荷条件的子集
- LINQ查询条件为字段值在数组中
- Codeforces 387E George and Cards 树状数组 + 集合set查询
- 用递归二分法实现同时获得一个数组内的最大最小值
- SparseArray HashMap 稀疏数组 二分法
- mybatis 查询参数为集合list、数组、map的情况
- javascript查询(简单的)对象在数组中位置
- PHP数组 怎么从指定位置开始查询?比如我想从c开始循环,怎么写?
- data 数组对象选择,赋值,查询接口
- 查询数组中相同元素的个数
- 数组搜索(search)之线性搜索与二分法搜索
- Matrix (POJ - 2155 )(树状数组的区间更新-点查询)