java在数组中使用二分法查找详解编程语言
/**
* 二分法查找
*
使用二分法查找的前提数组已经排过序
*/
public class Demo4 {
public static void main(String[] args) {
int[] arr = { 3, 1, 8, 2, 9, 100, 33, 22, 11, 18, 14, 17, 15, 3 };
// 使用Arrays.sort()排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// 返回结果
//int index = brinarySearch(arr, 99);
int index = brinarySearch_2(arr, 11);
System.out.println( index= + index);
}
/*
* 二分法查找一返回下标如果是-1就说明没有
*/
public static int brinarySearch(int[] arr, int key) {// 数组和要查找的数
int min = 0; // 最小的下标
int max = arr.length 1;// 最大的下标
int mid = (min + max) / 2;// 中间的下标
while (arr[mid] != key) {
if (key arr[mid]) { //比中间数还在
min = mid + 1; //最小的下标=中间下标加一
} else if (key arr[mid]) {//比中间数还小
max = mid 1; //最大的下标=中间下标-1
}
if(max min){
return -1;
}
mid=(min+max)/2; //再次计算中间下标
}
return mid;
}
/*
* 二分法查找一返回下标如果是-1就说明没有
*/
public static int brinarySearch_2(int[] arr, int key) {// 数组和要查找的数
int min = 0; // 最小的下标
int max = arr.length 1;// 最大的下标
int mid = (min + max) / 2;// 中间的下标
while(min =max){
if(key arr[mid]){
min=mid+1;
}else if(key arr[mid]){
max=mid-1;
}else{
return mid;
}
mid=(min+max)/2;
}
//没找到
return -1;
}
}
转载请注明来源网站:blog.ytso.com谢谢!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/14927.html
c相关文章
- 从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化
- java 删除目录下所有文件_Java删除文件、目录及目录下所有文件的方法实例
- java数组定义长度_JAVA数组的定义
- java二维数组试题_Java二维数组及习题总结
- java数组的声明_Java数组定义常用方法[通俗易懂]
- Java进阶:java开源商城系统源码
- java 论坛_5 个最好用的 Java 开源论坛系统
- java用正则表达式大全_Java 正则表达式 大全「建议收藏」
- java数组去重_JAVA数组去重常用方法
- Java 零拷贝_java高性能编程
- Java栈结构_栈java
- java中二维数组的定义及简单应用详解编程语言
- Java 数组到 HashMap 之算法解释详解编程语言
- 字节数组用txt文件保存Java工具类详解编程语言
- Java学习笔记之九java二维数组及其多维数组的内存应用拓展延伸详解编程语言
- Java学习笔记之五java数组详解编程语言
- Java学习笔记之四java进制转化详解编程语言
- Java学习笔记之一java关键字及作用详解编程语言
- Java中对Array数组的常用操作详解编程语言
- 认识JAVA数组详解编程语言
- Java程序员必备知识,《JAVA编程思想》包和访问权限详解编程语言
- Java与MySQL的实现协同(java和mysql)
- Java 数组的三种创建方法详解编程语言
- 之间的交互Redis与Java实现交互的探索(redis和java)
- Linux上善用Java:实现智能开发(linux 运行java)
- Java之oracle知多少(java的oracle)
- 从Java到Oracle轻松操作数据库(java写oracle库)