`
shuofenglxy
  • 浏览: 194410 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数组查值

 
阅读更多

问题描述:{4,5,7,8,1,2} 找值为K的元素。

两种做法,一种常规的稍好于直接查找,另一种为二分o(lgn)

import java.util.Arrays;

public class FindK {

	public static void main(String[] args) {
		int[] a = { 4, 5, 7, 8, 1, 2 };
		int[] b = { 1, 2, 3, 4, 5 };
		System.out.println(findK0(a, 5));
		 System.out.println(findK(a,5));
		// System.out.println(findK(a,6));
	}
	/**
	 * 折半
	 * @param a
	 * @param k
	 * @return
	 */
	public static int findK0(int[] a, int k) {
		if (a == null)
			return -1;
		int l = 0, r = a.length;
		while (l + 1 < r) {
			int m = l + (r - l) / 2;
			if (a[m] >= a[l]) {
				if (k < a[m]) {
					if (k >= a[l])
						r = m;
					else
						l = m;
				} else {
					l = m;
				}
			} else {
				if (k >= a[m]) {
					if (k <= a[r - 1])
						l = m;
					else
						r = m;
				} else {
					r = m;
				}
			}
		}
		return a[l] == k ? l : -1;
	}

	public static boolean findK(int[] a, int k) {
		for (int i = 0; i < a.length; i++) {
			if (a[i] == k)
				return true;
			else if (a[i] > k && i == 0) {
				for (int j = a.length; j > i; i--) {
					if (a[j] < a[i]) {
						if (a[j] == k)
							return true;
						else if (a[j] < k)
							return false;
						else if (a[j - 1] > a[j])
							return false;
						else
							continue;
					} else
						return false;
				}
			} else {
				if (a[i] < a[i + 1] && a[i] < k)
					continue;
				else
					return false;
			}
		}
		return false;
	}

}
 
分享到:
评论

相关推荐

    数组最大值最小值_数组最大值最小值_最小值_

    在处理数组时,经常需要找到数组中的最大值和最小值,这在各种算法和数据分析任务中都非常常见。本话题聚焦于如何在给定的包含20个元素的数组中找出最大值和最小值。 首先,我们要理解数组的基本概念。数组是由同一...

    Vue如何循环提取对象数组中的值

    1.数据如下,提取name和callcount 2代码. getQueryCallStatistics(sesp1, this.provinceId).then((res) =&gt; { let arr = []; let arr1 = []; let arr2 = [];... this.xunshiMap = res.data.callstatistics;...

    数组最值查询.zip_labview_数组最值查询

    本程序“数组最值查询.vi”就是针对这个需求设计的,它能够快速有效地找到一个数组中的最大值和最小值。 首先,我们要理解LabVIEW中的数组概念。在LabVIEW中,数组可以是一维、二维甚至多维的,它们由相同类型的...

    易语言数组中数值的查找

    这段代码首先定义了所需的变量,然后遍历数组,如果找到目标值,则设置`是否找到`为1并跳出循环。 5. **二分查找源码**:对于已排序的数组,可以使用二分查找法提高效率。 ```易语言 .定义 整数型, 数组名, 要...

    数组元素查询

    数组元素查询是常见的操作,它涉及检查一个特定的值是否存在于数组内,并基于查询结果返回相关信息。本篇文章将详细探讨数组、数组元素查询及其在实际编程中的应用。 首先,让我们了解什么是数组。数组是由相同类型...

    PHP删除二维数组中相同元素及数组重复值的方法示例

    在PHP编程中,处理数组是常见的任务之一,尤其是在二维数组中处理重复元素和值时。本文将详细讲解如何使用PHP来删除二维数组中的相同元素和重复值,以及涉及到的相关操作技巧。 首先,我们要理解二维数组的概念。二...

    Labview二维数组查重.vi

    LABVIEW对二维数组的某一个值索引,并检索出所有该值所在的行列数

    数组的增删改查

    ### 数组的增删改查——Java中的详细解析 #### 一、查询(查询数组中所有有效元素) 在Java中,查询数组中的所有有效元素通常采用遍历的方式。以下是一段示例代码: ```java for (int i = 0; i ; i++) { System....

    pb 编写的数组使用方法,希望对初学者有用

    在IT领域,数组是编程语言中的基础数据结构之一,用于存储和操作一组同类型的数据元素。根据提供的代码片段,我们可以深入探讨数组的使用方法,尤其是针对一维和二维数组的初始化、赋值以及如何在实际场景中应用这些...

    java 实现数组的增删改查

    对一维数组进行增删改查:int[] num = new int[10]; 要求:用方法实现 1.输入10个整数 2.删除指定位置上的数 3.修改指定位置上的数 4.查找某个数的位置(下标) 5.查找最大值 6.查找最小值 7.对数组进行排序

    cpp代码-测试查找数组最大值

    C++中寻找数组最大值的基本方法通常涉及遍历数组的每个元素,比较当前元素与已知的最大值(通常是数组的第一个元素),然后更新最大值如果必要。这个过程可以使用循环来实现,比如for或while循环。以下是一个简单的...

    js使用for循环查询数组中是否存在某个值

    关于使用JavaScript中的for循环来查询数组中是否存在某个特定值的问题,首先需要明确几个关键点:一是数组的基本概念;二是for循环的结构和用法;三是IE8浏览器中的兼容性问题。 首先,数组是JavaScript中一种非常...

    PHP查询xml,以数组返回

    这样,每个`$itemsArray`的元素就是一个普通的PHP数组,键是XML元素的名称,值是元素的文本内容。 4. **处理嵌套结构**: 如果XML元素有子元素,转换后的数组将包含子元素的数组。例如,如果`&lt;item&gt;`元素有`...

    php在数组中查找指定值的方法

    `array_search`函数用于在数组中搜索给定的值,并返回该值在数组中的第一个键名。如果数组中没有该值,则返回`false`。此函数的语法如下: ```php mixed array_search ( mixed $value , array $array [, bool $...

    JS数组的增删改查

    在这个主题"JS数组的增删改查"中,我们将深入探讨如何在JavaScript中有效地管理数组,包括添加元素、删除元素、修改元素以及查询元素。这些基本操作是编程中不可或缺的部分,无论是在前端开发还是后端处理,都需要...

    易语言快速判断数组中的数值

    3. **比较元素**:在循环中,我们可以用`比较指令`(如`等于`、`不等于`等)来检查当前元素与目标值的匹配情况。如果找到匹配的元素,就可以立即结束循环并返回结果。 4. **拷贝内存**:在易语言中,`拷贝内存`是一...

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    当你需要比较两个JSON对象中的数组并找出它们共有的元素时,可以采用几种不同的方法。在这个场景下,我们将探讨如何实现这个功能,并点击一个按钮后,将新数组的结果输出。这涉及到JavaScript的数据操作、数组遍历...

    JAVA中的二维数组

    - **求一维数组中的总和和平均值**:同样通过遍历数组累加所有元素值后计算得出。 - **添加、删除、修改、搜索等操作**:这些操作通常涉及对数组进行增删改查等操作。例如,对于查找操作,可以通过遍历来寻找特定...

Global site tag (gtag.js) - Google Analytics