js排序的基础原理理解
在了解数组排序前,我们先了解下如何交换两个数字的位置
假设我们有这么一个数组
var arr=[1,2,3]
我们想交换1和3两个的位置我们该如何做呢?
最简单的肯定是手动赋值,如下
var arr=[3,2,1]
这样就实现了交换数字的功能,但是这么做显然是不合理的,因为我们是程序化操作,我们肯定需要用程序的思维来解决问题,这时,我们可以引入两个变量把两个数值给存起来,然后实现交换,代码如下:
var arr=[1,2,3]
var a1=arr[0]
var a2=arr[2]
arr[0]=a2
arr[2]=a1
console.log(arr) //(3) [3, 2, 1]
你看,我们已经简单实现了两个数字的交换,但是我们想想能不能用一个变量实现需求呢,其实是可以的
例如:
var arr=[1,2,3]
var a1= arr[0] //我们把arr[0]赋值给变量a1,这样a1就等于了arr[0]
arr[0]=arr[2] //这时候我们把arr[2]的值给arr[0],这里是个关键,因为上一步我们把arr[0]的值已经给了a1了
arr[2]=a1 //这时候我们把a1的值(其实也就是arr[0]的值)给到了arr[2],这样就实现了交换数值的操作
console.log(arr)
有了上面的铺垫,我们再来说下排序
要求:请把下列数组从小到达进行排序,
var arr = [44,3,2,1,11,33]
我们先不开始写代码,我们来说下思路,我们默算的话肯定是把第一项拿出来然后和后面的每一个数字进行比较,我们比较完发现44是最大的,我们肯定是把它放到最后,然后拿出第二项和其他的数字进行比较,这样的话其实我们拿出一个数字是一次循环,然后把单个数字和其他所有数字比较又是一次循环,由此我们得出结论,这里需要两次循环才能够进行比较

var arr = [44,3,2,1,11,33]
for(var i=0;i<arr.length;i++){ //这里是取出数组里面的单个数字
for(var j=i;j<arr.length;j++){ //这里是把上面取出的单个数字和其他数字进行比较,所以有这么一个循环
if(arr[i]>arr[j]){//当发现数字比其他数字要大的时候,下面就开始进行数字交换了,就是上面我们说的数字交换
tem1=arr[i]
arr[i]=arr[j]
arr[j]=tem1
}
}
}
console.log(arr) //[1, 2, 3, 11, 33, 44]
js排序的基础原理理解的更多相关文章
- Vue.js数据响应基础原理
许多前端JavaScript框架(例如Angular,React和Vue)都有自己的数据相应引擎.通过了解相应性及其工作原理,您可以提高开发技能并更有效地使用JavaScript框架.在视频和下面的文 ...
- js 闭包原理理解
问题?什么是js(JavaScript)的闭包原理,有什么作用? 一.定义 官方解释:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 很显然 ...
- 排序图解:js排序算法实现
之前写过js实现数组去重, 今天继续研究数组: 排序算法实现. 排序是数据结构主要内容,并不限于语言主要在于思想:大学曾经用C语言研究过一段时间的排序实现, 这段时间有空用JS再将排序知识点熟悉一遍. ...
- Hadoop基础原理
Hadoop基础原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 业内有这么一句话说:云计算可能改变了整个传统IT产业的基础架构,而大数据处理,尤其像Hadoop组件这样的技术出 ...
- 总结下js排序算法和乱序算法
其实本人最怕的就是算法,大学算法课就感觉老师在讲天书,而且对于前端来说,算法在实际的应用中实在是很有限.毕竟算法要依靠大量的数据为基础才能发挥出算法的效率,就浏览器那性能,......是吧,退一万步说 ...
- 封装常用的js(Base.js)——【01】理解库,获取节点,连缀,
封装常用的js(Base.js)——[01]理解库,获取节点,连缀, youjobit07 2014-10-10 15:32:59 前言: 现如今有太多优秀的开源javascript库, ...
- Java基础之理解Annotation(与@有关,即是注释)
Java基础之理解Annotation 一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata) ...
- Js(javaScript)的闭包原理
问题?什么是js(javaScript)的闭包原理,有什么作用? 一.定义 官方解释:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 小编 ...
- C#基础原理拾遗——引用类型的值传递和引用传递
C#基础原理拾遗——引用类型的值传递和引用传递 以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始… 最近准备面试,深感基础之重要,奈何我不是计算机科 ...
随机推荐
- Postgres常用SQL
- Less混合结合:nth-child()选择器的高级玩法
1.先看效果图 上图中比较麻烦的是每块的底色处理,下面看怎么处理 2.:nth-child(n) 选择器 匹配属于其父元素的第 N 个子元素,不论元素的类型. n 可以是数字.关键词或公式. 数字:最 ...
- 万答#12,MGR整个集群挂掉后,如何才能自动选主,不用手动干预
欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 本文转载自微信公众号"老叶茶馆" MGR整个集群挂掉后,如能 ...
- HDU3085 Nightmare Ⅱ (双向BFS)
联赛前该练什么?DP,树型,状压当然是爆搜啦 双向BFS就是两个普通BFS通过一拼接函数联系,多多判断啦 #include <iostream> #include <cstdio&g ...
- C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>
作者: 目录 一.缘由 二.使用向量类型 2.1 基本算法 2.2 使用大小固定的向量(如 Vector4) 2.2.1 介绍 2.2.2 用Vector4编写浮点数组求和函数 2.3 使用大小与硬件 ...
- Excel 运算符(三):文本连接符
文本连接符&用来合并文本串.比如,连接"计算机"和"基础"两个文本串:"计算机基础"&"基础",最终结果 ...
- 文心大模型api使用
文心大模型api使用 首先,我们要获取硅谷社区的连个key 复制两个api备用 获取Access Token 获取access_token示例代码 之后就会输出 作文创作 作文创作:作文创作接口基于文 ...
- Apache DolphinScheduler 简单任务定义及复杂的跨节点传参
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler Apache DolphinScheduler是一款非常不 ...
- iOS 苹果集成登录及苹果图标的制作要求
前言 如果要上架的应用集成了三方登录,那么在审核时,苹果会强制要求应用也要集成苹果登录.如果应用没有集成一般情况下都会被审核团队给打回来. 苹果集成登录 首先,你需要在开发者中心,找到你的应用,勾选上 ...
- haodoop概念总结
大数据部门组织结构 Hadoop的优势(4高) 高可靠性:Hadoop底层维护多个数据副本 高扩展性:在集群间分配任务数据,可方便的扩展 高效性:在MapReduce的思想下,Hadoop时并行工作的 ...