实现二分法主要有一下两种:
while循环和递归。
package interview201505;public class BinarySearch { /** * 二分查找算法 * while循环 */ public static int binarySearch(int[] data, int find){ int low = 0; int high = data.length-1; while(low < high){ int mid = (low +high)/2; if(find < data[mid]){ high = mid; }else if(find > data[mid]){ low = mid; }else if(find == data[mid]){ return mid; } } return -1; } /** * 二分法使用递归 * */ public static int binarySearch2(int[] data, int find,int low,int high){ int mid = (low+high)/2; if(data[mid] < find){ return binarySearch2(data,find,mid+1,high); }else if(data[mid] > find){ return binarySearch2(data,find,low,mid-1); }else if (data[mid] == find){ return mid; } return -1; } public static void main(String[] args){ int[] data = {1,2,3,4,5,6,7}; System.out.println(binarySearch(data, 6)); System.out.println(binarySearch2(data, 6, 0, 6)); }}
相关文章
- 华为OD机试用java实现 -【分积木】
- 使用Java技术WebSocket创建聊天、群聊,实现好友列表,添加好友,好友分组,聊天记录查询功能。
- java调用chatgpt接口,实现专属于自己的人工智能助手
- Java应用【七】使用Java实现数据结构和算法:排序、查找、图
- 深入学习java集合:LinkedHashMap
实现 - 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 【Java数据结构学习笔记之二】Java数据结构与算法之队列(Queue)实现
- Effective Java 3rd 条目4 用私有构造子实现不可实例化
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]