问题描述:{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个元素的数组中找出最大值和最小值。 首先,我们要理解数组的基本概念。数组是由同一...
1.数据如下,提取name和callcount 2代码. getQueryCallStatistics(sesp1, this.provinceId).then((res) => { let arr = []; let arr1 = []; let arr2 = [];... this.xunshiMap = res.data.callstatistics;...
本程序“数组最值查询.vi”就是针对这个需求设计的,它能够快速有效地找到一个数组中的最大值和最小值。 首先,我们要理解LabVIEW中的数组概念。在LabVIEW中,数组可以是一维、二维甚至多维的,它们由相同类型的...
这段代码首先定义了所需的变量,然后遍历数组,如果找到目标值,则设置`是否找到`为1并跳出循环。 5. **二分查找源码**:对于已排序的数组,可以使用二分查找法提高效率。 ```易语言 .定义 整数型, 数组名, 要...
数组元素查询是常见的操作,它涉及检查一个特定的值是否存在于数组内,并基于查询结果返回相关信息。本篇文章将详细探讨数组、数组元素查询及其在实际编程中的应用。 首先,让我们了解什么是数组。数组是由相同类型...
在PHP编程中,处理数组是常见的任务之一,尤其是在二维数组中处理重复元素和值时。本文将详细讲解如何使用PHP来删除二维数组中的相同元素和重复值,以及涉及到的相关操作技巧。 首先,我们要理解二维数组的概念。二...
LABVIEW对二维数组的某一个值索引,并检索出所有该值所在的行列数
### 数组的增删改查——Java中的详细解析 #### 一、查询(查询数组中所有有效元素) 在Java中,查询数组中的所有有效元素通常采用遍历的方式。以下是一段示例代码: ```java for (int i = 0; i ; i++) { System....
在IT领域,数组是编程语言中的基础数据结构之一,用于存储和操作一组同类型的数据元素。根据提供的代码片段,我们可以深入探讨数组的使用方法,尤其是针对一维和二维数组的初始化、赋值以及如何在实际场景中应用这些...
对一维数组进行增删改查:int[] num = new int[10]; 要求:用方法实现 1.输入10个整数 2.删除指定位置上的数 3.修改指定位置上的数 4.查找某个数的位置(下标) 5.查找最大值 6.查找最小值 7.对数组进行排序
C++中寻找数组最大值的基本方法通常涉及遍历数组的每个元素,比较当前元素与已知的最大值(通常是数组的第一个元素),然后更新最大值如果必要。这个过程可以使用循环来实现,比如for或while循环。以下是一个简单的...
关于使用JavaScript中的for循环来查询数组中是否存在某个特定值的问题,首先需要明确几个关键点:一是数组的基本概念;二是for循环的结构和用法;三是IE8浏览器中的兼容性问题。 首先,数组是JavaScript中一种非常...
这样,每个`$itemsArray`的元素就是一个普通的PHP数组,键是XML元素的名称,值是元素的文本内容。 4. **处理嵌套结构**: 如果XML元素有子元素,转换后的数组将包含子元素的数组。例如,如果`<item>`元素有`...
`array_search`函数用于在数组中搜索给定的值,并返回该值在数组中的第一个键名。如果数组中没有该值,则返回`false`。此函数的语法如下: ```php mixed array_search ( mixed $value , array $array [, bool $...
在这个主题"JS数组的增删改查"中,我们将深入探讨如何在JavaScript中有效地管理数组,包括添加元素、删除元素、修改元素以及查询元素。这些基本操作是编程中不可或缺的部分,无论是在前端开发还是后端处理,都需要...
3. **比较元素**:在循环中,我们可以用`比较指令`(如`等于`、`不等于`等)来检查当前元素与目标值的匹配情况。如果找到匹配的元素,就可以立即结束循环并返回结果。 4. **拷贝内存**:在易语言中,`拷贝内存`是一...
当你需要比较两个JSON对象中的数组并找出它们共有的元素时,可以采用几种不同的方法。在这个场景下,我们将探讨如何实现这个功能,并点击一个按钮后,将新数组的结果输出。这涉及到JavaScript的数据操作、数组遍历...
- **求一维数组中的总和和平均值**:同样通过遍历数组累加所有元素值后计算得出。 - **添加、删除、修改、搜索等操作**:这些操作通常涉及对数组进行增删改查等操作。例如,对于查找操作,可以通过遍历来寻找特定...