数组(九)

来源:互联网 发布:心事谁人知原唱 编辑:程序博客网 时间:2024/04/30 10:11

public class FindArrays {/** * @param 折半查找 */public static void main(String[] args) {//int[] arr = {-32,12,16,24,36,45,59,98};//int index = getIndex(arr,24);//System.out.println(index);int[] arr = {-32,12,16,24,36,45,59,98};int index = halfSearch(arr,8);System.out.println(index);}/* * 折半的第二种方式 */public static int halfSearch_2(int[] arr,int key){int min = 0,max = arr.length-1,mid;while(min<=max){mid = (max+min)>>1;if(key>arr[mid]){min = mid+1;}else if(key<arr[mid]){max = mid -1;}else{return mid;}}return -1;}/* * 折半查找.必须保证数组是有序的数组。 */public static int halfSearch(int[] arr,int key){int min,max,mid;min = 0;max = arr.length-1;mid = (max+min)/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 = (max+min)/2;}return mid;}/* *普通查找 *///如果出现相同的数字就获取key第一次出现在数组中的位置public static int getIndex(int[] arr,int key){for(int x=0;x<arr.length;x++){if(arr[x]==key){return x;}}//返回-1表示没有找到return -1;}}


0 0
原创粉丝点击