黑马程序员技术交流社区
标题:
【哈尔滨校区】遍历数组
[打印本页]
作者:
萧涵
时间:
2015-12-13 06:03
标题:
【哈尔滨校区】遍历数组
class Array
{
public static void main(String[] args)
{
int[] arr = {9,12,15,24,36,41,59,68};
int index = binarySearch(arr,45);
System.out.println("index="+index);
}
//二分查找。前提:数组必须是有序的。
/*
思路:
1,通过角标先获取中间角标上元素。
2,让该元素和要找的数据比较。
3,如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标。
如果要找的数小了,要找的范围 头角标---中间角标-1;
4,不断如此重复,就可以找到元素对应的角标。
*/
public static int binarySearch(int[] arr,int key)
{
//1,定义三个变量,记录头角标,尾角标,中间角标。
int max,min,mid;
min = 0;
max = arr.length-1;
mid = (max+min)>>1;
while(arr[mid]!=key)
{
if(key>arr[mid])
min = mid + 1;
else if(key<arr[mid])
max = mid - 1;
//判断元素是否存在。
if(max<min)
return -1;
mid = (max+min)>>1;
}
return mid;
}
public static int binarySearch(int[] arr,int key)
{
//1,定义三个变量,记录头角标,尾角标,中间角标。
int max,min,mid;
min = 0;
max = arr.length-1;
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;
}
//查找。
//需求;查找一个元素在数组中的第一次出现的位置。
public static int searchKey(int[] arr,int key)
{
//遍历查找。
for(int x=0; x<arr.length; x++)
{
if(arr[x]==key)
return x;
}
return -1; //-1,代表的是角标不存在的情况。
}
}
作者:
zhangdazhi186
时间:
2015-12-13 08:58
写的挺好,进来借鉴观赏
作者:
洪志豪1994
时间:
2015-12-15 21:51
可以,感谢楼主
作者:
意念痴心灬戒贪
时间:
2015-12-15 22:18
感谢楼主的分享~!
作者:
南无ice
时间:
2015-12-15 22:27
帮楼主顶一顶。
作者:
Hansion
时间:
2015-12-15 23:19
帮楼主顶一顶
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2