java中的折半查找(二分查找)
2013-07-26 21:37
232 查看
(二分查找只适合有序数组)
查找有序数组中某个数在数组中的位置(角标)
public class ArrayFind {
public static void main(String[] args) {
int[] arr = {12,23,34,45,56,67,78};
int a=halfSearch2(arr,34);
System.out.println(a);
}
//折半查找(二分查找)
public static int halfSearch(int[] arr,int key){
int max=arr.length-1;
int min=0;
int mid = (min+max)/2;
while(arr[mid]!=key){
if(key>arr[mid]){
min=mid+1;
}else if(key<arr[mid]){
max=mid-1;
}
if(max<min)
return -1;
mid=(max+mid)/2;
}
return mid;
}
//方法二
public static int halfSearch2(int[] arr,int key)
{
int max,min,mid;
min = 0;
max = arr.length-1;
while(min<=max)
{
mid = (max+min)>>1; //右移1位相当于该数据除以2的一次方
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min-1;
}
}
查找有序数组中某个数在数组中的位置(角标)
public class ArrayFind {
public static void main(String[] args) {
int[] arr = {12,23,34,45,56,67,78};
int a=halfSearch2(arr,34);
System.out.println(a);
}
//折半查找(二分查找)
public static int halfSearch(int[] arr,int key){
int max=arr.length-1;
int min=0;
int mid = (min+max)/2;
while(arr[mid]!=key){
if(key>arr[mid]){
min=mid+1;
}else if(key<arr[mid]){
max=mid-1;
}
if(max<min)
return -1;
mid=(max+mid)/2;
}
return mid;
}
//方法二
public static int halfSearch2(int[] arr,int key)
{
int max,min,mid;
min = 0;
max = arr.length-1;
while(min<=max)
{
mid = (max+min)>>1; //右移1位相当于该数据除以2的一次方
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
else
return mid;
}
return min-1;
}
}
相关文章推荐
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现折半查找(二分查找)的递归和非递归算法
- Java二分查找、折半查找
- Java/Go实现——折半查找 二分查找
- java实现查找算法——折半查找(二分查找)
- LintCode_Java旅程 经典二分查找问题(折半查找)
- JAVA : 折半查找(二分查找、二分法)
- 折半查找(二分查找)Java实现
- Java实现折半查找(二分查找)的递归和非递归算法
- Java 语言实现折半查找(二分查找)
- 【转】Java实现折半查找(二分查找)的递归和非递归算法
- 查找-二分查找(折半查找)-java
- Java实现折半查找(二分查找)的递归和非递归算法
- 二分查找 java
- 黑马程序员——Java基础--冒泡、选择、二分查找
- 二分查找算法java
- 重学java之随机数组二分查找
- 二分查找JAVA实现