折半算法
/* 折半算法 思路:对于一个--有序--的数组来说,可以对折的方式,来查找给定的元素的角标值,如果没有,可以定义返回-1 折半的时候可以定义三个变量int max min和mid,在形参里定义key代表给定元素,如果key大于mid,则+1,如果小于,则—1 如果没有找到指定元素,可以定义返回-1 */ public class Halfsearch { public static void main(String[] args) { int[] arr = new int[]{2,4,8,10,11,24}; int index = halfSearch_2(arr,11); System.out.println(index); } /* //折半第一种算法的函数 public static int halfSearch(int[] arr,int key) { int min,max,mid; min = 0; max = arr.length-1; mid = (min+max)/2; while (arr[mid]!=key) { if (key>arr[mid]) { min = mid+1; } else if (key<arr[mid]) { max = mid-1; } if (min>max) { return -1; } mid=(min+max)/2; } return mid; } */ //折半第第二种算法的函数,min<=max就可以直接折半 public static int halfSearch_2(int[] arr,int key) { int min=0,max=arr.length-1,mid; while (min<=max) { mid = (min+max) >>1; if(key>arr[mid]) min = mid+1; else if(key<arr[mid]) max = mid-1; else return mid; } return -1; } }
如果您觉得上面的内容对您有帮助,可以打赏支持一下!
网友留言(0 条)