首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS 冒泡排序

算法简介 冒泡排序是一种简单排序算法。它重复地走访过要排序数列,一次比较两个元素,如果它们顺序不符合要求就把它们交换过来。...走访数列工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法名字由来是因为越小元素会经由交换慢慢“浮”到数列顶端(数组最前面)。...这样的话,一轮过后,数组中最小元素就是被放在数组最前面。前面已经排好序就不动,不参与比较。 重复步骤1,直到n-1个元素都排好序,那么最后一个就不用比较了,肯定就是其中最大元素。...时间复杂度和空间复杂度 再谈谈冒泡排序时间复杂度和空间复杂度吧!...如果并非是有序,就要循环遍历了。最坏情况就是完整经历两轮n次循环。 如果数组本身不是有序,都要经历两轮循环,只不过比最坏情况要好。

3.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

解析Javascript事件冒泡机制

事件阐述不是本文重点,尚未了解朋友,可以访问W3school教程 进行了解,这将有助于更好地理解以下内容 。 2.冒泡机制 什么是冒泡呢?         ...DOCTYPE html> Insert title here .box1 { border: green 40px solid...原因就在于事件冒泡,点击span时候,span 会把产生事件往上冒泡,作为父节点div2 和 祖父节点div1也会收到此事件,于是会做出事件响应,执行响应函数。...我们再来分析一下方法二:方法二原理是 元素收到事件后,判断事件是否符合要求,然后做相应处理,然后事件继续冒泡往上传递;         既然事件是冒泡传递,那可不可以让某个父节点统一处理事件,通过判断事件发生地

56440

JS事件冒泡和捕获

事件机制 ---- 事件触发三个阶段: window往事件触发处传播,遇到注册捕获事件会触发 传播到事件触发处时触发注册事件 从事件触发处往window传播,遇到注册冒泡事件会触发 事件触发一般会按照...|------------------------------------------- 但是有一个特例:如果给body中子节点同时注册冒泡和捕获事件,事件触发会按照注册顺序执行。...// 以下会先打印冒泡然后是捕获node.addEventListener( 'click', event => { console.log('冒泡') }, false)node.addEventListener...此时进入冒泡阶段,inner上时间处理器得到执行 事件命中元素后开始向上冒泡,一路查找是否注册了冒泡阶段祖先元素上时间处理器。由于没有找到因此什么也没发生。...我们把时间注册在冒泡阶段(addEventListeneruseCapture选项为false) var selector = document.querySelector.bind(document

2.5K20

js事件防止冒泡

事件处理程序中变量event保存着事件对象。而event.target属性保存着发生事件目标元素。这个属性是DOM API中规定,可是没有被全部浏览器实现 。...jQuery对这个事件对象进行了必要扩展,从而在不论什么浏览器中都能够使用这个属性。通过.target,能够确定DOM中首先接收到事件元素(即实际被单击元素)。...我们能够不把检查代码放在这里,而是通过改动button行为来达到目标 。 2. 停止事件传播 事件对象还提供了一个.stopPropagation()方法,该方法能够全然阻止事件冒泡。...这样行为与我们讨论事件处理程序不是同一个概念,它是单击锚元素默认操作。类似地,当用户在编辑完表单后按下回车键时。会触发表单submit事件,在此事件发生后,表单提交才会真正发生。...事件传播和默认操作是相互独立两套机制,在二者不论什么一方发生时,都能够终止还有一方。假设想要同一时候停止事件传播和默认操作,能够在事件处理程序中返回false。

2.4K40

RCU 机制_NRPS作用机制

通过允许在更新同时读数据,RCU 提高了同步机制可伸缩性(scalability)。...相对于传统在并发线程间不区分是读者还是写者简单互斥性锁机制,或者是哪些允许并发读但同时不 允许写读写锁,RCU 支持同时一个更新线程和多个读线程并发。...RCU 由三个基本机制组成,第一个用于插入,第二个用于删除,而第三个则用于让读线程可以承受并发插入或删除。...这三个机制将在下面的三节中介绍,讲述如何将 RCU 转化为链表: 订阅发布机制 (用于插入) 等待已有的RCU读者完成 (用于删除) 维护多个最近更新对象版本 (为读者维护) 这三个章节之后还有上重点回顾与快速问题答案...订阅发布机制 RCU一个关键特性是它可以安全地扫描数据,即使数据正被同时改写也没问题。要提供这种并发插入能力,RCU使用了一种订阅发布机制

71420

JS事件冒泡及阻止

事件冒泡及阻止 当一个元素接收到事件时候,会把他接收到事件传给自己父级,一直到window,当然其传播是事件,绑定执行函数并不会传播,如果父级没有绑定事件函数,就算传递了事件,也不会有什么表现...事件冒泡原因是事件源本身可能没有处理事件能力,即处理事件函数并未绑定在该事件源上。它本身并不能处理事件,所以需要将事件传播出去,从而能达到处理该事件执行函数。...实例 当点击id为i3时,浏览器会依次弹出3 2 1,这就是事件冒泡,此正方形处于叶节点上,对其操作事件会向上进行冒泡,直到根节点。 JS事件冒泡及阻止 div{...DOCTYPE html> JS事件冒泡及阻止 li{

6.5K20

JavaScript系列之事件冒泡机制简介

JavaScript系列之事件冒泡机制 DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段,事件冒泡顺序是由内到外进行事件传播,事件冒泡是由IE开发团队提出来...听了简介介绍之后,您可能不理解,所以举个例子: js事件冒泡测试 <div id='content' onclick...、ulonclick、divonclick,contentonclick,从内到外执行,所以这个就是冒泡事件简单例子 最近也遇到了这种情况,所以就去网上搜索资料,简单学习一下,就是点击一个按钮时候...,竟然触发了两次,通过排查,发现了冒泡机制导致,解决方法是禁用事件冒泡机制 w3c方法是e.stopPropagation(),IE则是使用e.cancelBubble = true $(element...JavaScript 详说事件机制冒泡、捕获、传播、委托:https://www.cnblogs.com/bfgis/p/5460191.html

53020

js作用

前言 相信自从es6出来之后,你一定多少知道或者已经在项目中实践了部分块级作用域,在函数或者类内部命名变量已经在使用let了,但是你知道它真正作用是什么吗?...又是因为什么我们要用这个块级作用域,本文与你一起探讨块级作用场景以及所有细节问题。...es6之前作用域 特点1 :js只有函数级作用域以及全局两种 特点2 :不通过var声明变量直接赋值也可以用并且可以访问,原理是直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...块级作用域 场景一 循环中块级作用域 如果我们有一个遍历循环绑定事件,并且需要把当前指针绑定到对应方法中。...参考文档 前端技术文档-兵哥技术集锦,es6入门 let-mdn文档 变量提升-菜鸟教程 学习js闭包-阮一峰博客

3.2K20

JsGC机制

JsGC机制Js七种基本类型中引用类型Object变量其占据内存空间大且大小不固定,在堆内存中实际存储对象,在栈内存中存储对象指针,对于对象访问是按引用访问。...在栈区中执行变量等是通过值访问,当其作用域销毁后变量也就随之销毁,而使用引用访问堆区变量,在一个作用域消失后还可能在外层作用域或者其他作用域仍然存在引用,不能直接销毁,此时就需要通过算法计算该堆区变量是否属于不再需要变量...,从而决定是否需要进行内存回收,在Js中主要有引用计数与标记清除两种垃圾回收算法。...引用计数算法 对于引用计数垃圾回收算法,把对象是否不再需要简化定义为该对象有没有其他变量或对象引用到它,如果没有引用指向该对象,该对象将被垃圾回收机制回收。...在这里,对象概念不仅特指JavaScript对象,还包括函数作用域或者全局词法作用域。引用计数垃圾回收算法使用比较少,主要是在IE6与IE7等低版本IE浏览器中使用。

77120

JS作用

JavaScript作用域有全局作用域和局部作用域 先通过一下代码来体验下作用域 var x = 1; function f1(){ var y = 2; x = 10; console.log...ReferenceError: y is not defined at :7:13 上述代码中变量x就是全局作用域,方法f1作用域也是全局,f1方法中变量y是局部,y作用范围仅限f1方法体内...,离开了f1方法体作用范围,就无法获取到y值,所以上述例子中最后打印y时候是undefined 我们再来看下面的例子 var a = 1; function f1(){ console.log...a,当前a值为undefined 4-3)定义局部变量c,当前c值为undefined 4-4)给局部变量b进行赋值,使用2*a表达式结果进行赋值,由于a值为undefined,...所以b值为NaN(Not a Number) 4-5)给局部变量a赋值为20 4-6)给局部变量c进行赋值,使用a+1表达式结果进行赋值,由于上一步局部变量a值为20,所以a+1表达式值为

8410

mysql锁机制_类加载机制作用和过程

那么我们MySQL数据库中功能也是类似的,处理事务隔离性中,可能会出现脏读、不可重复读、幻读问题,所以,锁作用也可以解决这些问题!...在数据库中,数据是一种供许多用户共享访问资源,如何保证数据并发访问一致性、有效性,是所有数据库必须解决一个问题,MySQL由于自身架构特点,在不同存储引擎中,都设计了面对特定场景锁定机制,所以引擎差别...,导致锁机制也是有很大差别的。...锁机制 : 数据库为了保证数据一致性,而使用各种共享资源在被并发访问时变得有序所设计一种规则。...悲观锁一般都是依靠关系型数据库提供机制。 行锁,表锁不论是读写锁都是悲观锁。 乐观锁: 就是很乐观,每次自己操作数据时候认为没有人会来修改它,所以不去加锁。

36010

JS作用域和作用域链

JS作用域就是在一定空间范围内对数据进行读写操作。 在JS中一个变量作用域(scope)是程序中定义这个变量区域。 变量有全局变量和局部变量两种。...ECMAScript程序中执行流正是由这个便利机制控制着。 执行环境可以分为创建和执行两个阶段。...此外还要讲下JS作用域中块级作用域。 JS中是没有块级作用域这个概念。 什么是块级作用域呢?...JS并不支持块级作用域,它只支持函数作用域,而且在一个函数中任何位置定义变量在该函数中任何地方都是可见。 那么JS又该怎么拥有块级作用域呢?...根据“在一个函数中定义变量,当这个函数调用完之后,变量会被销毁”特性,来模拟出JS块级作用域。

4.1K30
领券