查找数组内的值

原创 2015年07月06日 21:40:06

1、查询数组内数值

功能:查找数组内的值

描述:查找数组内的值,返回所查找值所对应的角标,若数组内没有所查找的值,返回-1

public static int getIndex(int[] arr,int num)
{
	for(int x=0; x<arr.length; x++)
	{
		if(num==arr[x])
			return x;
	}
	return -1;
}
2、二分查找法(折半查找法)

描述:二分查找法只能查找有序的数组。

public static int halfSearch(int[] arr,  int num)
{
	int max, mid, min;
	min = 0;
	max = arr.length-1;
	mid = (max+min)>>1;
	while(min<=max)
	{
		mid = (max+min)>>1;
		if(num>arr[mid])
			min = mid+1;
		else if(num<arr[mid])
			max = mid-1;
		else 
			return mid;
	}
	return -1;
}
3、面试题

给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,
那么个元素的存储的角标为如何获取。
{13,15,19,28,33,45,78,106};
    采用二分查找法(折半查找法)实现此要求,当max大于min时,即mid不存在时,此时的min为要插入数的位置。当插入的值为50时,用二分查找法在此数组中查找50,当min=6,max=5时,代表在数组内没有找到50,返回-1。这里不返回-1,当没找到50时,前面数小,后面数大,min值即为插入的角标。

public static int halfSearch(int[] arr,  int num)
{
	int max, mid, min;
	min = 0;
	max = arr.length-1;
	while(min<=max)
	{
		mid = (max+min)>>1;
		if(num>arr[mid])
			min = mid+1;
		else if(num<arr[mid])
			max = mid-1;
		else 
			return mid;
	}
	return min;
}

相关文章推荐

有关在某个数组中查找一个值的算法(Python实现)

第一种算法思路:第一步:随机出来一个数组的下标 第二步:判断下标对应的值是否等于被查找的值,是的话终止,已找到,否的话转第三步。 第三步:判断是否随机完数组的所有下标,是的话终止,没找到,否的...
  • bojdoog
  • bojdoog
  • 2016年01月12日 16:46
  • 3486

有序数组前后两部分旋转后,查找最小值

题目:一个有序数组(如{1,2,3,4,5,6,7})前后两部分旋转(变为{4,5,6,7,1,2,3})后,查找数组中的最小值。 大致思路,利用二分查找法:线比较array[left](4)与ar...

【Core Java Volume 5】集合算法---查找数组、集合最大值的通用方法

一、查找数组的最大值 1   笔试的时候通常查找数组的最大值,数组类型通常是int类型,可以这样直接写出getMax()代码: //数组(int 类型) public static ...

在排序数组中查找和为定值的两个元素

题目:已知一个yij

在部分有序数组中查找定值

描述:给定一个有序数组经过部分旋转,如{0,1,2,3,4,5,6}旋转后{4,5,6,0,1,2,3};给定key值,若查找成功则返回数组中key值元素索引,否则返回-1。 思路一:暴力法,从数组头...

查找数组中和的特定值的匹配对

问题描述现有一列数组,找出数组中和为10的匹配对。 例如, 输入:[-10,1,5,3,20,9,9,10,2] 输出:(-10,20);(1,9)算法JavaScript实现内外层两次循环使用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找数组内的值
举报原因:
原因补充:

(最多只允许输入30个字)