数组常用操作

js操作数组的常用方法 特性说明是否改变原数组不会改变原数组。返回值返回一个新数组,新数组是原数组展平后的结果。适用场景用于将嵌套数组展平为一维数组,可以指定展平的深度。特性说明是否改变原数组不会改变原数组。返回值返回一个新数组,新数组是映射并展平后的结果。适用场景用于对数组中的每个元素执行映射操作,并将结果展平一层。 阅读详情
/**
* 需求: 数组的常用排序查找法
* 思路:
* 1. 新建一个公共类 ArrSort
* 2. 定义公共静态方法 xuanze maopao1 maopao2
* 3. 方法注释写过程
*/

public class ArrSort {
	/**
	* 主函数: 保证类文件的独立运行
	*/
	public static void main(String[] args) {
		// 定义初始数组
		int arrs[] = {-1, 20, 8, 99, 127, 423};
		//printArray(arrs);
		//xuanze(arrs);
		//printArray(arrs);
		//maopao1(arrs);
		//printArray(arrs);
		//maopao2(arrs);
		//printArray(arrs);
		//int[] arrs_sheng = {-1, 2, 3, 5, 78, 98, 119};
		System.out.println("要查找的元素的位置:" + chazhao(arrs, 20, false));
		int[] arrs_jiang = {119, 98, 76, 54, 32, 23, 10};
		System.out.println("要查找的元素的位置:" + chazhao(arrs_jiang, 18,true));
	}
	/**
	* 打印数组中的每个元素
	*/
	public static void printArray(int[] arrs) {
		if( arrs.length <=0 ) return; // 如果传入的数组为空则不进行处理
		System.out.print("["); //数组开始标志
		for(int i=0; i<arrs.length; i++) {
			// 保证格式, 因为length的是数组元素的个数,所以减1
			if(i != arrs.length-1) {
				System.out.print(arrs[i] + ",");
			} else {
				System.out.println(arrs[i] + "]");
			}
		}
	}
	/**
	* 实现交换两个元素
	*/
	private static void swap(int[] args, int x, int y) {
		if(args.length<=0 && x<0 && y<0) return;
		int temp = args[x];
		args[x] = args[y];
		args[y] = temp;
	}
	/**
	* 选择排序
	* 思路:
	* 1: 通过for循环对数组中的每个元素进行遍历
	* 2: 内层嵌套一个for循环,找到其中最大的元素
	* 3: 如果外层循环所代表的位置的元素小于内循环所代表的元素,使用临时变量进行交换
	* 4: 由于数组是引用传递所以不需要返回值
	*/
	public static void xuanze(int[] arrs) {
		// 判断数组是不是为空
		if(arrs.length <= 0) return;
		// 外层循环不需要对最后一个元素进行遍历
		for(int x=0, num=0, index=0; x<arrs.length-1; x++) {
			num = arrs[x];
			index = x;
			for(int y=x+1; y<arrs.length; y++) {
				if(num < arrs[y]) {
					num = arrs[y];
					index = y;
				}
			}
			if(index != x) swap(arrs, x, index);
		}
	}
	/**
	* 冒泡排序1
	* 思路:
	* 1: 使用外层循环控制内层循环的循环次数
	* 2: 内层循环依次比较两个相邻的两个元素,找出其中最小的进行交换
	*/
	public static void maopao1(int[] arrs) {
			if(arrs.length <=0) return;
			for(int x=0; x<arrs.length-1; x++) {
				//-x 因为x是控制内循环次数的
				for(int y=0; y< arrs.length-1-x; y++) {
					if(arrs[y] > arrs[y+1]) {
						swap(arrs, y, y+1);
					}
				}
			}
	}
	/**
	* 冒泡排序2
	* 同冒泡1的思路 只不过外层循环是由最后索引来进行递减
	*/
	public static void maopao2(int[] arrs) {
		if(arrs.length <=0) return;
		for(int x=arrs.length; x>0; x--) {
			for(int y=0; y<x-1; y++) {
				//System.out.println("X=" + x + " arrs[y]=" + arrs[y] + " arrs[y+1]=" + arrs[y+1]);
				if(arrs[y] < arrs[y+1]) {
					swap(arrs, y, y+1);
				}
			}
		}
		
	}

	/**
	* 折半查找
	* 思路:
	* 1.定义3个变量 min最小下标位置 mid中间位置 max最大下表位置
	* 2.判断数组是升序还是降序
	* 3.升序处理思路
	* 4.降序处理思路
	* 有序如果没有该元素返回插入点
	*/
	public static int chazhao(int[] arrs, int key, boolean isYouXu) {
		if(isYouXu) {
			if(arrs.length <= 0) return -1;
			int min=0, max=arrs.length-1, mid=(min+max)>>1;
			System.out.println(arrs[max] > arrs[min]);
			if(arrs[max] > arrs[min]) { // 升序
				// 升序思路: 循环判断key是不是不等于 arrs[mid]
				while(key != arrs[mid]) {
					if(key > arrs[mid]) { // 要查找的元素比mid下标所在元素大
						// 移动最小下标
						min = mid+1;
					} else if(key < arrs[mid]){ //要查找的元素比mid下表所在元素小
						// 移动最大下标
						max = mid-1;
					} 
					// 判断最大下标是不是小于最小下标
					if(max < min) return -min-1; // 没有查找到元素
					mid = (min+max)/2;
				}
				return mid; // 循环结束,证明找到了该元素返回位置
			} else { // 降序
				System.out.println("进入降序查找");
				// 降序思路
				// 判断max<=min // 如果成立就返回-1 证明没有查找到元素	
				while(max >= min) {
					mid = (min+max)>>1; // 右移一位相当于除2
					System.out.println("MAX=" + max + " Min=" + min + " Mid=" + mid);
					if(key > arrs[mid]) { // 要查找的元素比mid所在元素大,移动max
						max = mid-1;
					} else if(key < arrs[mid]){ //要查找的元素比mid所在元素小,移动min
						min = mid+1;
					} else { // 要查找的元素即不大于mid所在元素也不小于 那么就只有等于了 所以直接返回 mid
						return mid;
					}
				}
				return -min+1;
			}
		} else { // 无序的查找
			for(int i=0; i<arrs.length; i++) {
				if(key == arrs[i]) return i;
			}
			return -1;
		}
	}
}

保姆级避坑指南:用Livox官方工具搞定Mid-360多雷达自动标定(附源码Bug修复) 本文详细解析了使用Livox官方工具进行Mid-360多雷达自动标定的全流程,包括环境搭建、工具链配置、关键Bug修复及数据采集最佳实践。重点解决了PointCloudMapper.cpp边界检查缺失和calibration.cpp点云显示问题,提供了实用的代码修复方案和标定质量评估指标,帮助开发者高效完成激光雷达标定任务。 阅读详情

相关推荐

IBM AC922 8335-GTW 安装linux,CentOS,ubuntu,RHEL各种坑

AC922

u011970286的专栏 894

【数组及数组的常用操作】

数组的操作 (内置操作方法 7 个) 和(不改变数组本身的方法)

YcintaL0203的博客 460

Unity3D实战:5分钟搞定RTSP监控视频播放(附完整代码)

本文提供了一套在Unity3D中快速集成RTSP监控视频播放的实战方案。通过采用LibVLCSharp for Unity这一成熟稳定的跨平台中间件,开发者可以轻松实现RTSP流的解码与渲染,并附有完整的C#代码示例,帮助用户在5分钟内完成集成,适用于智慧园区、安防监控等3D可视化场景。

weixin_29001655的博客 191

Java中数组常用的操作方法

数组元素最大值和最小值:可以使用循环遍历数组,同时记录最大值和最小值,并在遍历完成后得到最大值和最小值。数组元素反转:可以使用两个指针,一个指向数组首部,一个指向数组尾部,交换元素位置来实现数组的反转。数组元素平均值:可以使用循环遍历数组,计算数组元素的总和,然后除以数组的长度得到平均值。数组元素求和:可以使用循环遍历数组,并将每个元素相加来计算数组元素的总和。数组元素筛选:可以使用流和过滤器来筛选数组中符合特定条件的元素。数组元素去重:可以使用Set集合来去除数组中的重复元素。方法查找元素是否存在。

凭时间赢来的东西,时间肯定会为之作证 3982

PowerBI启动故障排查:环境变量与兼容性设置全指南

本文详细解析了PowerBI启动故障的常见问题,如空白界面和闪退,并提供了环境变量修改与兼容性设置的全方位解决方案。通过调整WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS环境变量和设置兼容模式,有效解决PowerBI启动问题,提升软件运行稳定性。

weixin_29255731的博客 471

LSM6DSOW陀螺仪轮询驱动:从I2C/SPI配置到数据读取全解析

惯性测量单元(IMU)是现代嵌入式系统中实现姿态感知与运动跟踪的核心传感器,其通过加速度计和陀螺仪测量线性加速度与角速度。在嵌入式开发中,轮询(Polling)作为一种基础且可靠的通信方式,通过主循环主动查询传感器状态,简化了初始调试与验证流程。对于I2C/SPI接口的数字传感器,掌握寄存器配置、数据就绪标志检查及原始数据转换是通用的驱动方法,能够快速验证传感器工作状态并理解数据流。LSM6DSOW作为一款高性能6轴IMU,支持可配置的量程与输出数据速率,适用于无人机飞控、手持云台等高动态场景。本文以LSM

weixin_28728265的博客 557

JS数组常用的操作方法

1. push() 将一个或多个元素添加到数组的末尾,并返回该数组的新长度。此方法修改原有数组。 var arr = ['a','b','c']; var ele = arr.push('d'); // ele结果为: 4; // arr数组被修改: ['a','b','c','d']; 2. pop(),从数组中删除最后一个元素,并返回该元素的值。如果数组为空,则返回undefined。此方法修改原有数组。 var arr = ['a','b','c','d']; var ele = arr.pop()

简廉的博客 2万+

YOLOv11垃圾检测实战:从零搭建带GUI的智能分类系统(附完整数据集)

本文详细介绍了如何从零开始构建一个基于YOLOv11的智能垃圾检测系统,并集成图形化界面。内容涵盖数据集构建与增强、模型选型与轻量化改进(如引入注意力机制),以及使用PyQt5开发稳定GUI的完整流程,旨在解决实际部署中精度与速度的平衡问题,为环保科技等应用场景提供可落地的解决方案。

646

js操作数组常用的方法

在前端开发中,操作数组是常见的操作。这里列举下在开发中常用的一些方法。

weixin_46541579的博客 920

Cadence PCB仿真 使用Allegro PCB SI为BRD文件创建通用型IBIS模型的方法图文教程

本文简单介绍使用Allegro PCB SI软件为BRD PCB设计文件中的元器件创建IBIS模型的方法。

fydar的博客 2169

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 518

7个常用的JavaScript数组操作进阶用法

上面7中常用 JavaScript 操作数组方法,从最简单的查找最大值到复杂的数对查找,涵盖了去重、排序、旋转等经典操作;希望能帮到你!!!别人可以拷贝我的模式,不能拷贝我的苦难,不能拷贝我不断往前的激情。

tigerhhzz的博客 1213

自动驾驶大模型---小米&华科的ORION端到端方案

本文介绍了小米汽车与华中科技大学联合开发的ORION自动驾驶端到端方案。该框架创新性地将视觉语言模型(VLM)与自动驾驶系统结合,包含QT-Former特征提取模块、大语言模型(LLM)推理模块和生成式规划器三大核心组件。通过视觉感知与语言理解的深度融合,ORION能更准确地理解人类指令并生成合理轨迹,同时提升系统的可解释性。实验证明,该方案在准确性、泛化能力和决策透明度方面均有显著优势。ORION框架为自动驾驶技术提供了新思路,有望推动行业向更安全、智能的方向发展。

智能汽车人的博客 2005

前端对数组操作最常用的几种方法

由于前端的业务比较复杂,在数据的增删过程中可能需要以数组的形式操作,但是数组有时候可能会不满足用户的需求,比如说我在数组中插入某一个值,不影响原来的元素,或者删除一个元素。删除的时候从开头删呢还是结尾删,都需要考虑。所有js提供了几种常用的方法进行对数组操作,详解如下代码: 1.push() ①说明 push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。 如果出现push()方法,那后边就必须跟一个参数,最少是一个,其他的可选 push()方法可把它的参数顺序添加到arrayO...

似水流年,是谁苍白了等待 2993

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数组常用的操作方法

1,什么是数组?元素组成的有序集合2,创建数组两方式?示例:1,push 尾部添加 数组本身改变 返回值 是数组的长度2,pop 尾部删除 数组本身改变 返回值 返回删除的数组3,shift 头部删除 数组本身改变 返回值 返回删除的元素4,unshift 头部添加 数组本身改变 返回值 是数组的长度5,sort 排序 数组本身改变 返回值 排序后的数组6,reverse 反转 数组本身改变 返回值 反转后的数组7,splice 删除 添加 替换 arr.splice(下标,长度,插入

shfjcncjn的博客 3141

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Javascript中数组的常用操作

Array对象 创建数组对象的两种方式 字面量方式 var arr = [1, 2, 3]; var arr =[]; 构造函数创建数组对象 // 创建了一个空数组 var arr = new Array(); //创建了一个长度为5的数组 var arr = new Array(5); // 创建了一个数组,里面存放了3个字符串 var arr = new Array('zs', 'l...

Boboy 452

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hello_算法_数组的常用操作

本文介绍了数组的基本概念和常用操作。数组是一种线性数据结构,元素存储在连续内存中,通过索引访问。主要操作包括初始化、随机访问、插入删除元素、遍历查找、扩容数组等。由于数组长度固定,插入删除操作效率较低。数组优势在于随机访问快,常用于排序搜索、查找表、机器学习等领域,也是实现其他数据结构的基础。文章还展示了各类操作的代码实现,并指出数组在内存中的存储特性使其具有特定的性能特点和应用场景。

leijinquan01的博客 751

常用的对数组的操作

concat() 连接两个或更多的数组,并返回结果。 every() 检测数值元素的每个元素是否都符合条件。 filter() 检测数值元素,并返回符合条件所有元素的数组。 indexOf() 搜索数组中的元素,并返回它所在的位置。 join() 把数组的所有元素放入一个字符串。 lastIndex

YufJi的博客 459

JS中数组的常用操作方法

JS中数组的常用操作方法 push / pop / unshift / shift 1. push push( )方法:可以将一个或者更多的参数添加在数组的尾部;返回添加后的数组的长度,原数组发生改变。 代码示例如下: var arr=[1,2,3,4]; var a=arr.push(9,8,7); console.log(a,arr);//1,2,3,4,9,8,7; 2. unshif...

Du_三木的博客 906

JavaScript 数组常用操作方法详解

操作数组的方法

zhangbaiming_的博客 446

【PHP】- 字符串,数组,字典常用操作

在PHP中,字符串、列表(数组)和字典(关联数组)是三种非常基础且常用的数据类型。下面将分别介绍它们的一些常用操作。

Mr_WoLong 910

js 数组操作常用方法

push():在数组后面加入元素,并返回数组的长度; unshift():在数组前面就如元素,并返回数组的长度; pop():删除最后一个元素; var arr =[1,2,3,4,5] ; ...

u011927449的博客 100

常用的数组操作方法

常用的数组操作方法 数组添加:push(后面添加),unshift(前面添加) let arr = ["1", "2", "3"]; console.log(arr.push(0, 4)); // 添加后的数组长度:5 console.log(arr); //["1", "2", "3", 0, 4] let arr = ["1", "2", "3"]; console.log(arr.unshift(0, 4)); // 添加后的数组长度:5 console.log(arr); //[ 0, 4,"1"

dashuaibi555的博客 353

Python常用数组操作函数

Python常用数组操作函数 1.添加数组元素: 列表:list=[‘sadsad’,1, ‘哈哈’, ‘是否’] append():向末尾添加一个内容 如:list.append(‘我是最后一个’) 输出:[‘sadsad’,1, ‘哈哈’, ‘是否’,‘我是最后一个’] extend():向末尾添加多个内容 如:list.extend([‘大毛’,‘二毛’]) 输出:[‘sadsad’,1, ...

weixin_44284051的博客 3818

JavaScript 数组操作的常用方法

本文介绍了JavaScript中常用的数组操作方法,包括数组合并和迭代器函数。concat()方法用于按顺序合并多个数组,生成新数组。迭代器函数部分详细讲解了every()、some()、forEach()、map()、filter()和reduce()的用法。every()用于验证所有元素是否满足条件,some()用于检查是否存在满足条件的元素,forEach()用于遍历数组,map()用于生成处理后的新数组,filter()用于筛选符合条件的元素,reduce()用于将数组归约为单一值。这些方法分别适用

nailixiaomianbao的博客 272
上一篇: Java语言学习-数据结构接口
下一篇: 消费者和生产者问题
yfstdio
博客等级 码龄14年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值