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,因为数组 立即下载

相关推荐

基于SHIS凝视型短波红外高光谱相机(900-1700nm)区分不同宝石的差异性和可分性(宝石分选)

SHIS系列凝视型高光谱相机基于液晶可调谐滤波器(LCTF),通过电控LCTF进行连续细分窄波段分光,对每个波段进行高分辨率的二维面阵成像,进行图像处理后,获得完整的高光谱高清图像序列。具有低功耗、小型化、使用方便和易于扩展的优势。其工作波段覆盖400nm至1000nm,能够捕捉宝石在不同波长下的光谱特征,为宝石鉴定提供了新的工具。

wayho的博客 709

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

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

weixin_42662753的博客 3万+

【上海大学计算机组成原理实验报告】一、数据传送实验

将58H写入A寄存器//将6BH写入W寄存器//将C3H写入R1寄存器//将C3H写入R1寄存器//了解实验仪器数据总线的控制方式//掌握数据传送的基本原理//掌握各寄存器的结构、工作原理及其控制方法//数据传送实验

HackerKevon的博客 3509

JAVA版插入排序法

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

weixin_42417704的博客 260

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search

论文阅读—Square Attack: a query-efficient black-box adversarial attack via random search 发表位置 ECCV 2020 摘要 作者提出了一种基于得分的黑盒Square attack,该模型不依赖于模型的局部梯度信息,因此可以绕过梯度隐藏防御攻击。Square Attack是一种随机搜索方法,它在随机位置选择局部的方形更新,使得每次迭代时扰动近似位于可行集的边界。 背景 当涉及到对安全至关重要的机器学习应用时,对抗性的例子尤其值得

yayayamaomaoya的博客 2493

手把手教你用QEMU虚拟化华为路由器固件(附完整网络配置指南)

本文提供了一份详尽的QEMU虚拟化华为路由器固件的实战指南。从固件解包、网络桥接配置到QEMU虚拟机启动,手把手教你搭建完整的嵌入式设备沙箱环境,特别适合安全研究、逆向分析和学习嵌入式系统工作原理。

tgb3456789的博客 937

javascript 中搜索数组的四种方法

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

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

【有啥问啥】智能座舱CPD技术:毫米波雷达如何守护儿童安全?

本文深入探讨了智能座舱中CPD(Child Presence Detection)技术如何通过毫米波雷达保障儿童安全。毫米波雷达凭借其穿透性检测、微动感知等优势,成为儿童遗留车内的有效解决方案。文章详细解析了技术原理、系统集成方案及安装指南,为智能座舱安全技术提供了实用参考。

weixin_29193259的博客 357

javaScript数组查询算法挑战

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

MingSir2018的博客 1004

安装和使用pandoc

支持 Markdown、DOCX、LaTeX、HTML、PDF、EPUB 等 60+ 种格式 的互相转换

PLANTTHESON的博客 6831

1篇1章3节:R 语言的产生与发展轨迹(更新2024/08/14)

药物的研究阶段包括靶标确定、生物学模型建立、新化学实体的发现和优化新化学实体四个关键环节。每个环节都在药物研发过程中发挥着至关重要的作用。通过科学严谨的方法和技术手段,研究人员能够在药物研发过程中不断探索和优化,从而发现和开发出具有高效、安全性的候选药物,为疾病治疗提供更多的选择和希望。

MD Code 2664

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

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

weixin_46516925的博客 3289

第一章 EB安装

1.DemoWorkspace 是基于EB当前组件配置下的例程,包含了启动文件和中断服务函数以及组件demo。2.Mclsar 下存放的是EB的插件包和静态MCAL的驱动文件。

舊梦的博客 1961

Java二维数组和排序算法

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

701

ssm框架搭建

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

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

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

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

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

weixin_62343228的博客 408

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【JavaScript速成之路】JavaScript数组

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

小杨的博客 2175

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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、付费专栏及课程。

余额充值