数组中查找並返回数组_java数组查找常见情况
一.最简单的查找元素方法(依次比较):给一个数组,在数组里面查找某个元素在数组中的位置,并返回它的位置。
public static void main(String[] args) {int arr[] = new int[]{12, 4, 54, 57, 87, 3, 41, 1, 3, 4, 1, 3, 4, 31, 2};getIndex(arr ,54);
}public static int getIndex(int[] arr, int key) {for (int i = 0; i < arr.length; i++) {if (key == arr[i]) {System.out.println("这个数值在数组中,且在第"+(i+1)+"个位置");return i;}}System.out.println("这个数值不在数组中");return 0;
}
特点,通用,但是这个效率太慢,需要从第一个元素依次比较。
二.查找一个数值是否在这个数组里面,若存在返回它所在位置,若不存在它应该有序数组在什么位置:(折半查找)
public class ShuZuFind {public static void main(String[] args) {int arr[] = new int[]{12, 4, 54, 57, 87, 3, 41, 1, 3, 4, 1, 3, 4, 31, 2};for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length-1-i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println(Arrays.toString(arr));getIndex(arr, 54);}public static int getIndex(int[] arr, int key) {int min = 0;int max = arr.length - 1;while (min <= max) {int mid = (min + max) / 2;if (key > arr[mid])min = mid + 1;else if (key < arr[mid])max = mid - 1;else {System.out.println("该数值存在于数组,且在第" + (mid+1) + "位置");return mid;}}System.out.println("该数值不存在于数组,它应该位于第"+(min+1) +"个位置处");return min;}
这里我们先用冒泡算法就行排序,再用折半查找进行索引。我们来看看结果:1.输入54看看结果,
2.输入10看看结果,
3.输入-1看看结果,
三.在上面的基础上,将这个数值按大小放进这个有序数组,生成新的有序数组,看看代码:(插入数值得到新数组)
//将数值放入数组中,生成新的有序数组
public static void newArr(int[] arr, int mid, int key) {int[] arr02 = new int[arr.length + 1]; //定义一个新数组,大于下标的数后移一位int mid01 = mid-1;arr02[mid01] = mid;for (int i = 0; i < arr02.length; i++) {if (i < mid01) { //当下标小于需要插入的位置时,赋原来数组的值arr02[i] = arr[i];} else if (i == mid01) //当下标等于需要插入的位置时,赋插入的值arr02[i] = key;else { //当下标大于需要插入的位置时,赋原来数组的值arr02[i] = arr[i - 1];}}System.out.println(Arrays.toString(arr02));
}
得到结果是:
数组中查找並返回数组_java数组查找常见情况相关推荐
- 【JS实战】移除数组中的元素(返回新的数组)
移除数组中的元素(返回新的数组) 方法一:for循环+push function remove(arr, item) {let newArr = [];for(let i = 0; i < ar ...
- php函数从数组中取出指定的数目,PHP数组函数
1.array_rand()从数组中随机取出一个或多个元素(返回值是:随机元素的键)$arr=['js','css',25,'php',30]; printf(' %s ',print_r($arr, ...
- php删除数组中的空元素_PHP | 从数组中删除所有出现的元素
php删除数组中的空元素 Given an array and we have to remove all occurrences of an element from it. 给定一个数组,我们必须 ...
- asp数组中REDIM的用法(动态数组)
asp数组中REDIM的用法(动态数组) 动态数组里面的一个语句,只能出现在过程里面,可以多次使用.可以改变数组大小,和维数 格式: REDIM [Preserve] 数组名(下标1[下标2....] ...
- 数组中哪些常用方法会修改原数组
一.不会改变原来数组的有: concat() concat() 方法用于连接两个或多个字符串. 该方法没有改变原有字符串,但是会返回连接两个或多个字符串新字符串. every() every() 方法 ...
- vba 跳到下一个循环_VBA野知识分享:从一个数组中取部分值生成新数组,不使用循环的思路...
从一个数组中取部分值生成新数组,要实现此需求通常都是采用循环的方法来完成,那有没有更简易的思路呢? 借用jscript可以实现,直接取值,不用循环.例如从100000万中元素是取8000个值出来生成新 ...
- C语言向有序数组中插入一个数使该数组仍保持有序
C语言向有序数组中插入一个数使该数组仍保持有序 #include<stdio.h> int main() { int n,i,j,t,k; printf("您喜欢 ...
- 取原始数组中的指定数据push新数组
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>取原始 ...
- 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点
利用for循环把遍历数组中的元素依次获取出来 数组索引号从0开始 所以i必须从0开始 i<6 <script>var arr = ['blue', 2, true, 4, 5, 6 ...
最新文章
- 【经验】对一个合格C++高级工程师(音视频方向)的要求
- 聊一聊:下班后的消息,要不要回?
- python 数据分析学什么-利用Python做数据分析 需要学习哪些知识
- 如何掌握并在实践中自如运用设计模式
- 【OS学习笔记】十九 保护模式六:保户模式下操作系统内核如何加载用户程序并运行
- python爬虫淘宝手机_【Python3 爬虫】14_爬取淘宝上的手机图片
- ArcUser 2006第2期拾零
- Mysqldump命令参数介绍
- 文末送书 | 自动机器学习(AutoML):方法、系统与挑战
- cast函数_关闭RTTI后dynamic_cast和typeid报异常
- 用php的for循环画椭圆,如何快速简单的使用css3画出各种各样的椭圆
- 如何生成1-1000的数字,并且顺序打乱
- 人机协作机器人发展趋势_一文了解全球工业机器人发展现状:轻型化、柔性化及人机协作成为发展趋势...
- Broadcast variabies-广播变量
- [MySQL FAQ]系列 -- 如何利用触发器实现账户权限审计
- Django学习-19-缓存
- 华为2台3928千兆电口对接trunk启不来
- java file文件删除_Java File.delete 删除文件
- 太牛了,值得收藏!7000字22张图,精讲 Redis 知识!
- 台湾 计算机术语,快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识...
热门文章
- Apache Lucene拼写检查器的“您是不是要”功能
- python支持复数以及相关的运算吗_Python: 复数的数学运算
- Struts2请求处理的内部流程说明(版本二)
- 使用IDEA的Spring Initializr创建SpringBoot工程
- g30u盘启动 中科曙光1620_I620-G30
- window部署python项目_Django在Window下的部署
- java 实例对象拷贝,实例详解java对象拷贝
- C 语言中std::array的神奇用法总结
- tp5怎么生成短链接_请问在tp5中怎样才能使用url函数?
- python 配置文件中密码不能是明文_配置文件中明文密码改为密文密码的方法