java中常见算法2
来源:互联网 发布:复制网站源码 编辑:程序博客网 时间:2024/06/06 05:21
* @param arr 一个数组
* @param a 要查找的整数
* @return 返回查找到的数组下标,没找到则返回"-1"
*/
public int find(int [] arr,int a){
//先将数组排序
Arrays.sort(arr);
//定义开始下标,结束下标
int begin = 0;
int end = arr.length-1;
while(begin<=end){
//定义中间下标
int middle = (begin + end)/2;
if(a ==arr[middle]){
return middle;
}else if(a>middle){
begin = middle+1;
}else{
end = middle -1;
}
}
return -1;
}
/*
* 利用递归实现二分查找:
* @param arr 一个数组(该数组已经按从小到大排了序)
* @param a 要查找的整数
* @param beginIndex 数组中查找开始的下标(要在数组下标的范围之内)
* @param endIndex 数组中查找结束的下标 (要在数组下标的范围之内)
* @return 返回查找整数在数组中的位置,没有则返回-1
*/
public int halfFindByRecursion(int [] arr,int a,int beginIndex,int endIndex){
if(beginIndex>arr.length||endIndex>arr.length|beginIndex>endIndex){
throw new RuntimeException("数组下标越界");
}
if(a<arr[beginIndex]||a>arr[endIndex]){
return -1;
}
int middle = (beginIndex+endIndex)/2;
if(a==arr[middle]){
return middle;
}else if(a>arr[middle]){
//继续调用自身方法进行递归
return halfFindByRecursion(arr,a,middle+1,endIndex);
}else{
//继续调用自身方法进行递归
return halfFindByRecursion(arr,a,beginIndex,middle-1);
}
}
待续.......
- java中常见算法2
- Java中常见算法总结
- java中常见的数据算法
- java中常见的排序算法
- Java中常见的排序算法
- Java数组中常见的排序算法
- Java中常见的查找算法
- 算法中常见名词
- 常见JAVA算法题
- java常见算法
- java常见排序算法
- 常见Java排序算法
- java常见算法
- java常见算法题目
- Java常见排序算法
- Java中的常见算法
- java常见排序算法
- Java常见排序算法
- Excel中ISERROR()函数
- gcc编译参数-fPIC的一些问题
- UVA 10763 Foreign Exchange
- 地基工friend class
- tar压缩解压缩命令详解z
- java中常见算法2
- Comparison Predicates
- MinGW 编译libwebsockets
- Activity的四种启动模式
- C++友元friend --c++利用friend修饰符,可以让一些你设定的函数能够对这些保护数据进行操作
- 黑马程序员--十一、Java1.5部分新特性
- 2D物理系统笔记
- C++类型转换:static_cast、const_cast、dynamic_cast、reinterpret_cast
- @Repository、@Service、@Controller 和 @Component