查找数组内的值

原创 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;
}

零零散散学算法之找出数组中重复的数---总结篇

找出数组中重复的数 前序         最近一直在看v_JULY_v的专栏,从中学到了很多关于算法方面的知识,也受到了很大的启发。我相信喜欢算法的朋友,看过他的博文之后也会有这种想法...
  • fengchaokobe
  • fengchaokobe
  • 2012年03月17日 20:01
  • 3973

利用setInterval()实现每隔两秒依次出现数组中的一个值

Title arr=[1,2,3,4,5,6,7,8,9]; i=0; var t=setInterval('show()',2000); functio...
  • qq_20777797
  • qq_20777797
  • 2017年10月28日 10:21
  • 145

找出数组中符合条件的数对的个数

题目:一个整型数组,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。 方法一:排序+二分...
  • cyuyanenen
  • cyuyanenen
  • 2016年06月25日 16:00
  • 1095

数组中的查找两个元素,它们的和是指定的值

1.    在一个既定的数组中,给定一个目标值,判断数组中是否存在和为给定数的元素。 例如,数组array={1,5,2,6,8,13}, 指定的目标值target=10,那么可以找到的array中的...
  • nigel_lee_beihang
  • nigel_lee_beihang
  • 2015年01月01日 17:05
  • 2164

在一个int数组里查找出所有这样的数,它大于等于左侧所有数,小于等于右侧所有数。

这题很直观的一个算法是,挨个的查找各个元素是否满足条件,算法的复杂度是O(n^2),太过复杂。 但如果我们在从左到右扫描数组的时候,能够维护一个candidate的数组, 该数组的元素满足: 到目前...
  • flowerdasiy
  • flowerdasiy
  • 2014年09月11日 14:56
  • 547

一个数组内的元素挨个相加得到的值组成一个新数组(算法)

比说说有一个数组arr=[4,10,5,13,3] 然后再重新定义一个数组,myarr=[] myarr[0]=arr[0] myarr[1]=arr[0]+arr[1] myarr[2]...
  • seven0404
  • seven0404
  • 2016年07月22日 13:03
  • 231

php取出数组内指定的值

PHP array_slice() 函数 array_slice() 函数在数组中根据条件取出一段值,并返回。 注释:如果数组有字符串键,所返回的数组将保留键名。 语法 array_slice...
  • ricky_sky
  • ricky_sky
  • 2014年11月21日 11:32
  • 331

取值为[1,n-1] 含n 个元素的整数数组至少存在一个重复数,O(n) 时间内找出其中任意一个重复数

可以使用类似单链表求环的方法解决这个问题。把数组想想成一个链表,这里用数组元素的值作为下一个元素在数组中的索引。 设数组A共有n个元素,即A={ a0, a1, a2, …, an-1 }。   ...
  • dy0558775258712345
  • dy0558775258712345
  • 2014年07月11日 10:09
  • 756

求数组中多个数相加等于某一值

主要思想:排序+两端逼近 内容:排序使得整个数组有序从而可以使用双指针从数组的两端向中间逼近所需要的值7、3Sum 顾名思义,求数组中3个数相加等于某一特定的数自己写了一个似乎是O(n^2) 汗颜...
  • u013033845
  • u013033845
  • 2016年07月29日 19:41
  • 3441

模型mutablearray的排序

NSSortDescriptor 指定用于对象数组排序的对象的属性。 如果是Employee对象需要按照name来排序,就生成下面的descriptor NSSortDescriptor *des...
  • cos_sin_tan
  • cos_sin_tan
  • 2016年02月14日 17:30
  • 582
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找数组内的值
举报原因:
原因补充:

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