赞
踩
使用二分法查找有序数组中指定的元素,二分法,就是折半查找,先从中间开始查询,如果中间的数小于查询的数,那么查询的区域就缩小到中间数以后的元素,如果中间数大于查询的数,那么查询的范围就缩小到下标为0到中间数,一直查询查询,直到找到要查询的数为止。对于折半查找,我这里有两种方法,代码如下:
第一种:
public static int getIndex(int[] arr,int target){ //第一个元素的下标值 int first = 0; //第二个元素的下标值 int last = arr.length-1; //查找数的下标值 int index=-1; while(first<=last){ //中间下标值 int middle = (first+last)/2; //等于 if(arr[middle]==target){ index = middle; break; }else if(arr[middle]>target){ last=middle; }else if(arr[middle]<target){ first=middle+1; } } return index; }
这种方法是利用了while循环做的,对于简单的有序数组,它可以很快的查询出来,但是对于复杂的有序数组,查询结果就是错的,什么样的是复杂的有序数组呢?就是在一个有序数组中,有
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。