JavaScript 数组常用算法总结——【查找算法、排序算法、二维数组排序和转置】

javascript基础之(数组) 目录 一、初识数组 1、创建数组 2、访问数组元素 3、数组的遍历 4、举例 (1.)获取数组元素中的最大值 (2.) 数组转为字符串 5、数组元素的操作 二、数组排序算法 1、冒泡排序算法 2、插入排序算法 ​ 三、二维数组 1、创建二维数组 2、元素的访问 3、二维数组求和 4、二维数组的转置 一、初识数组 类型相同的数据的集合。 1、创建数组 (1.)使用'[]'字面量创建 var 变量名 = [1,2,3,4]; (2.)使用'new Arr... 阅读详情

一、 查找算法

1. 顺序查找

依次查找每个元素;

//遍历一遍看是否找到
function generalSearch(arr,data){
	 for(var i = 0; i < arr.length; i++){
	 	if(arr[i] == data){
	 	return true;
	  	}
	 }
	return false;
}

2. 二分法查找(折半查找)

前提:被查找的序列必须是有序的;

var arr=[27,98,5,31,7,10]
var t=prompt("请输入要查找的数")
//需要先排序
for(var i=0;i<arr.length;i++){ //控制排序趟数
    for(var j=0;j<arr.length-1;j++){ //控制比较次数
        if (arr[j]>arr[j+1]) {
            var temp=arr[j]
            arr[j]=arr[j+1]
            arr[j+1]=temp
        }
    }
}
console.log("排序后的序列"+arr)
var i=0,j=arr.length-1
t=parseInt(t)
while (i<=j) {
    var mid=parseInt((i+j)/2)
    if (arr[mid]==t) {
        console.log("查找成功,下标是"+mid)
        break
    }
    else if (arr[mid]>t) { //左区间
        j=mid-1
    }else if(arr[mid]<t){ //右区间
        i=mid+1
    }
}
if (i>j) {
    console.log("没有找到"+t)
}

二、 排序算法:

1. 冒泡排序:

数组元素依次进行两两比较,两元素存在大小关系进行交换,直到数组有序。

var arr = [10, 7, 5, 31, 98, 27];
console.log('排序前的数组是' + arr);
for (var i = 0; i < arr.length - 1; i++) {
    for (var j = 0; j < arr.length - i  -  1; j++) {
        if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
console.log('排序后的数组是' + arr);

2. 选择排序:

不停地把最小值找出来放在无序数列的最前面。

//选择法排序
var arr = [10, 7, 5, 31, 98, 27];
for (var i = 0; i < arr.length; i++) {
    var k = i;
    var min = arr[k];//假定无序数列的第一个数为最小值
    for (var j = i + 1; j < arr.length; j++) {//和i后面的数不停地进行比较,找出最小的数用k记录下标
        if (arr[j] < min) {
            min = arr[j];
            k = j;
        }
    }
    if (k != i) {//把最小值放到未排序中的第一个
        var temp = arr[i];
        arr[i] = arr[k];
        arr[k] = temp;
    }
}
console.log('排序后的数组是' + arr);

三、 翻转数组

翻转数组法1:简单但不推荐,不节省空间

var arr = [23,78,12,45,89,90];
var newArr = [];

for(var i = arr.length; i > 0; i--){
    newArr[newArr.length] = arr[i-1];        
}
console.log(newArr);

翻转数组法2:最推荐节省空间

var arr = [23,78,12,45,89,90];

for(var i = 0; i < arr.length/2; i++){
    var temp = arr[i];
    arr[i] = arr[arr.length-1-i];        
    arr[arr.length-1-i] = temp;        
}
console.log(arr);

翻转数组法3:

var arr = [23,78,12,45,89,90];
var i = 1;
var j = arr.length-1;

for(var i = 0; i < j; i++){
    var temp = arr[i];
    arr[i] = arr[j];        
    arr[j] = temp;  
    j--;      
}
console.log(arr);

四、 二维数组

定义:通过两个下标来确定一个数组元素
二维数组声明方式:

 	   var arr = new array();//先声明一维 
       for(var i=0;i<10;i++){//一维长度为10 
          arr[i]=new array();//声明二维 
          for(var j = 0; j < 10; j++){//二维长度为20 
             arr[i][j]=1; 
       	  } 
	   } 

1. 二维数组的转置

	var arr = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']];
	var res = [];
	for (i = 0; i < arr[0].length; i++) {
	    res[i] = [];
	    for (j = 0; j < arr.length; j++) {
	        res[i][j] = arr[j][i];
	    }
	}
	console.log(res);

2. 二维数组的排序

//冒泡排序
var arr = [[11, 22, 33], [44, 55, 66], [77, 88, 99]];
// var min = arr[0][0];
for (var i = 0; i < arr.length; i++) {
    for (var m = 0; m < arr[i].length - 1; m++) {
        for (var j = 0; j < arr[i].length - m - 1; j++) {
            if (arr[i][j] < arr[i][j + 1]) {
                var temp = arr[i][j];
                arr[i][j] = arr[i][j + 1];
                arr[i][j + 1] = temp;
                // min = arr[i][j];
            }
            // console.log(min);
        }
    }
}
console.log(arr);
// 选择排序
for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr[i].length; j++) {
        var n = j;
        var max = arr[i][j];
        for (var k = j + 1; k < arr[i].length; k++) {
            if (arr[i][j] > max) {
                max = arr[i][j];
                n = k;
            }
        }
        if (n != j) {
            temp = arr[i][j];
            arr[i][j] = arr[i][n];
            arr[i][n] = temp;
        }
    }
}
console.log(arr);
JS算法题之查找数字在数组中的索引位置 前言 编写算法时,排序是一个非常重要的概念。它有各种各样的种类:冒泡排序、希尔排序、分块块排序,梳排序,鸡尾酒排序,侏儒排序 —— 这些可不是我瞎编的! 这个算法题能够让我们一睹精彩的世界。我们必须对数字数组进行升序排序,并找出给定数字在该数组中的位置。 算法说明 将值(第二个参数)插入到数组(第一个参数)中,并返回其在排序后的数组中的最低索引。返回的值应该是一个数字。 例如 getIndexToIns([1,2,3,4], 1.5) 应该返回 1,因为 1.5 大于 1(索引0),但小于 2(索引1)。 同样,getIndexToIns([20,3,5], 19) 应该返回 2,因为数组 立即下载

相关推荐

Q&A | ZStack替代VMware实问实答

ZStack替代VMware实问实答

zstack_org的博客 1801

8种在JavaScript数组中查找指定元素的方法(用于开发中数据的处理)

1、Array.prototype.includes() includes() 方法用来判断一个数组是否包含一个指定的值,如果包含则返回 true,否则返回 false。 该方法支持两个参数valueToFind,fromIndex(可选),第一个参数是‘需要查找的元素值’,第二个参数是‘从哪个索引处开始查找’,第二个参数如果为负数,则会按升序从 array.length + fromIndex 的索引开始查找(即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。 var a = [1

weixin_42662753的博客 3万+

挑战第七天:Llamaindex RAG 实践

安装python 依赖包,并安装 Llamaindex和相关包以及Sentence Transformer 模型。进入开发机后,创建新的conda环境,命名为。镜像,然后在资源配置中,使用。的选项,然后立即创建开发机器。后,点击 选择镜像 使用。然后安装相关基础依赖。

weixin_53579823的博客 728

JAVA版插入排序法

核心思想: 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后 一个元素当成是未排序序列。 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相...

weixin_42417704的博客 260

基于java的汉服商城管理系统设计与实现的详细项目实例

本文介绍了一个基于Java的汉服商城管理系统设计与实现项目。该项目采用三层架构设计,包含用户模块、商品管理、订单处理、支付结算等核心功能,支持多角色权限控制和响应式前端界面。 系统创新点包括: 专业化的汉服商品管理,支持多规格属性组合 高并发订单处理机制,确保库存实时同步 个性化智能推荐算法提升用户体验 细粒度权限控制保障系统安全 项目采用SpringBoot+MyBatis技术栈,前端使用React框架实现跨设备兼容。数据库设计包含用户表、商品表、订单表等10个核心表,通过事务管理确保数据一致性。 系统解

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 804

RAP Draft Handling 全面拆解:从独占 Draft 到协作 Draft 的架构与落地实践

独占 Draft 的启用点在行为定义头部的with draft。with draft;create;update;delete;with draft;上面这段代码来自一个完整的 Draft 启用示例,包含了 Draft 表声明、锁策略、ETag、Draft 动作等关键要素。:告诉框架草稿存哪。:告诉框架如何做并发控制与一致性保护。:把草稿生命周期动作显式暴露出来,让 UI 与事务引擎能正确驱动流程。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 958

javascript 中搜索数组的四种方法

前端经常要通过 javaScript 来处理数组中的数据,其中就包括检查数组中是否包含满足特定搜索条件的单个或者多个值,这就需要我们关于用于确认的布尔值、数组中值得位置索引或包含所有搜索结果的单独数组等。 在 ECMAScript6 之前,最常用的方法就是通过 for 循环来遍历数组中的所有项目并对项目执行操作。现在我们可以通过内置的使用方法来完成在数组中搜索值的常见任务。 本文将介绍 Array.includes()、Array.indexOf()、Array.fiind() 和 Array.filter

CRMEB小程序商城的博客 2万+

华为OD机试真题 新系统 2026-08-02 C++ 实现【战士技能规划设计】

你为一款动作游戏设计战士角色的技能。战士每个技能会消耗不同能量,释放技能有两个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态,也就是分段。

MISAYAONE的博客 75

javaScript数组查询算法挑战

 如果数组第一个字符串元素包含了第二个字符串元素的所有字符,则函数返回true。举例,["hello", "Hello"]应该返回true,因为在忽略大小写的情况下,第二个字符串的所有字符都可以在第一个字符串找到。["hello", "hey"]应该返回false,因为字符串"hello"并不包含字符"y"。["Alien", "line"]应该返回

MingSir2018的博客 1004

基于嵌入式Linux设计的智能车库(GEC6818)

随着城市化进程的加快,传统停车管理方式存在效率低下、人工成本高、车主体验差等问题。为解决这些问题,本项目基于嵌入式Linux技术,设计并实现了一套智能车库管理系统。该系统采用GEC6818开发板作为核心控制器,运行Qt应用程序,并结合USB免驱摄像头进行车牌识别,RFID模块完成刷卡支付,SQLite数据库存储车主信息和停车记录。系统提供车主注册、用户管理、出入库管理、停车费结算、车辆查询等功能,并具备语音播报提示,提高用户体验。通过本系统,停车场管理更加高效、智能,有助于提升停车服务质量,减少人工干预,适

445

实测可复现|2026 Cloudflare盾v4.0反反爬全实战:从JS/WASM逆向到JA3指纹伪装,手把手突破拦截(附完整逆向代码+避坑手册)

本文以2026年Cloudflare盾v4.0(集成Shield Synapse v2.0)为核心,全程以实战复盘为视角,拆解了从JS/WASM混合逆向、全维度指纹伪装(JA3+浏览器指纹)、人类行为模拟,到代理池搭建的全流程,整合了完整可复现的代码,所有步骤和踩坑点均为实测所得,无任何AI套话,新手也能跟着复现,最终实现爬取成功率从12%提升至95%+。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1686

JavaScript二维数组的常用方法及排序

多维数组: 多维数组实际上就是数组的数组,指数组的每一元素也是一个数组; JavaScript中的二维数组的列的长度可以不唯一; 二维数组的创建: //创建已知的二维数组 var multiArr=[[1,2,3,4],[5,6,7],[8,9]]; //创建一个4行6列的二维数组 var muArr = new Array(4); ...

weixin_46516925的博客 3289

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java二维数组和排序算法

文章目录二维数组Scanner案例 : 计算器排序算法变量交换排序冒泡排序选择排序查找二分法 二维数组 我们可以使用数组保存多个数据 比如我们这个教室,坐着的都是大数据14期的学生,这个教室就相当于数组,我们就是数组中的元素 但是隔壁还有一个前端07期,里面都是07期的学生, 这两个教室都在1808,如果把07和14当成数组的话,1808就是二维数组 二维数组本质 就是一个平面数据结构(表) 二维数组中的元素都是一维数组 Scanner 接收控制台输入 public class Array_03 {

701

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数组、排序算法和二维数组

数组的创建、访问和遍历,冒泡排序和插入排序,二维数组的创建、访问和转置

weixin_62343228的博客 408

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【JavaScript速成之路】JavaScript数组

JavaScript速成之路7:带你了解JavaScript中的数组,主要向大家介绍一维数组和二维数组这两种数组的相关操作。

小杨的博客 2175

JavaScript日常练习:二维数组转置、冒泡排序、插入排序、模板:省份城市的三级联动

1.二维数组转置: 如:转置前arr [ [‘a’,‘b’,‘c’], [‘d’,‘e’,‘f’], [‘g’,‘h’,‘i’], [‘j’,‘k’,‘l’], ] 转置后res [ [‘a’,‘d’,‘g’,‘j’], [‘b’,‘e’,‘h’,‘k’], [‘c’,‘f’,‘i’,‘l’], ] 我们得出规律:res[i][j]=arr[i][j],且res数组长度=arr元素长度,res元素...

weixin_42077503的博客 772

JavaScript-数组(创建、访问、新增)、查找(二分法)、排序(冒泡、选择)、二维数组

文章目录1. 数组1.1 创建数组1.2 数组元素的访问1.3 新增数组长度 1. 数组 一组数据的集合,每个数据被称作元素,可以存放任意类型的元素。是一种将一组数据存储在单个变量名下的方式。 1.1 创建数组 利用new创建数组 利用数组字面量创建数组 <script> var 数组名 = new Array() ; // A要大写 var arr = new Array(); // 创建一个新的空数组 //1. 使用数组字面量方式创建空的数组 var 数组名 = []; //2.

Sco_jing的博客 386

韩顺平_轻松搞定网页设计(html+css+javascript)_第28讲_js二维数组_js冒泡排序_二分查找_学习笔记_源代码图解_PPT文档整理

文西马龙:http://blog.youkuaiyun.com/wenximalong/ 一维数组——小结 ①数组可存放任意类型的数据 ②数组大小不必事先指定,可以动态增长 ③数组名可以理解为指向数组首地址的引用 arr=[45,90,0]; document.writeln(arr); //则输出 45 90 0 ④数组元素从0开始编号的 多维数组——二维数组 多维数组我们只介绍二维数

文西马龙 5679

JavaScript学习手册五:JS数组

第5关:数组的应用——内排序 本关的编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下: 函数mainJs(a)中的变量arr是一个数组,你需要对该数组进行选择排序; 返回选择排序进行过程中,在每一趟交换前,待排序子数组的最大元素的位置组成的数组; 比如对于上面相关知识中的数组[9,5,8,0,2,6],第一次交换前,最大的元素9的索引是0,第二次交换前,最大元素8的索引是2,第三次交换前最大元素6的索引是0,第四次交换前最大元素5的索引是1,第五次交换前最大元素2的索引是1,第六次交换

m0_46270930的博客 4925

php 知道数组数排第几,PHP数组,数组排序算法,数组查找算法介绍

PHP数组,数组排序算法,数组查找算法介绍发布时间:2020-06-23 08:11:24来源:51CTO阅读:843作者:pcn01PHP数组,数组排序算法,数组查找算法介绍数组基础:php中,数组的下标可以整数,也可以是字符串php中,数组的元素顺序不是由下标决定,而是由其“加入”的顺序决定定义:$arr1 = array(元素1,元素2,。。。。。。);array(1,1.1,5,'abc'...

weixin_39888018的博客 627

JS数组的排序

在JS中,存在多种为数组排序的方法,比如数组内置方法sort和reverse。除此之外,我们也可以使用一些经典算法来给数组排序,比如:冒泡排序,选择排序等等。

jackispy的博客 1604

js 二维sort数组排序

冒泡排序: var arr=[1,22,1,23,52,32,12]; function bubble(arr){ var i,j,d; for(i = 0; i < arr.length; i ++){ for(j = 0; j < arr.length; j ++){ if(arr[i] < arr[j]){ d=arr[j]; arr[j]=arr[i]; arr[i]=d; } } }

Bug制造者 4410

php大数组查找算法,PHP数组,数组排序算法,数组查找算法介绍

PHP数组,数组排序算法,数组查找算法介绍数组基础:php中,数组的下标可以整数,也可以是字符串php中,数组的元素顺序不是由下标决定,而是由其“加入”的顺序决定定义:$arr1 = array(元素1,元素2,。。。。。。);array(1,1.1,5,'abc',true,false); //可以存储任何数据,此时为默认下标array(2=>1,4=>1.1,3=>5,7=&...

weixin_35648264的博客 302

c++排序函数对二维数组排序_数组排序

前言熟悉数组和字符之间的转化,可以参考我之前的文章https://zhuanlan.zhihu.com/p/186438076​zhuanlan.zhihu.com熟悉十大排序算法JS几种数组排序及sort的实现给出以下数组,并进行排序处理var arr = new Array('1','3','8','2','3','5');插入法排序插入法排序,即那数组的后边一项和前面一项对比,如果后面一项小...

weixin_39758956的博客 2012
上一篇: JavaScript 数组
下一篇: JavaScript 函数(含经典案例:反转数组、求所有参数最大值、判断闰年、获取指定年份的2月份的天数)
impact_factor
博客等级 码龄6年 32粉丝 44原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值