CSS3去除移动端点击元素时产生的高亮背景色 做了一段时间的移动端项目了,碰到了一个顽固的BUG: 即点击一个icon元素的时候,发现底部会有一块蓝色的高亮。...最终,只用了一小段的css代码就解决了 tap-highlight-color (移动端上)有事件监听的元素被点击的时候会被高亮显示,比如我的android上表现为一个蓝框加上半透明的背景,这有时候会和我本来的样式格格不入...以下是对应的 CSS 代码: tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent; 这个属性是用于设定元素在移动设备...(如Adnroid、iOS)上被触发点击事件时,响应的背景框的颜色。...想要禁用这个高亮,设置颜色的alpha值为0即可。 也可以通过rgba设置颜色,例: -webkit-tap-highlight-color: rgba(255,0,0,0.5);
www.jshint.com/ · JSLint: http://www.jslint.com/ 代码规范 · Code Guide: http://alloyteam.github.io/code-guide/ · 编写可维护的...-web中创建炫酷的浮动粒子的库: · Fullpage.js—快速实现全屏滚动特性: · Highlight.js—web 语法高亮: · Waypoints.js—滚动到某个元素位置时触发一个功能:...diff 工具 · Vivus.js—在 SVG 上绘制动画 · Wow.js—滚动时展现动画 · Scrolline.js—页面滚动时显示滚动进度 · Velocity.js—快速流畅的 JavaScript...动画 · Animate on scroll—漂亮的页面滚动元素动画 · Handlebars.js—Javascript 模板 · jInvertScroll—视差滚动 · One page scroll...的 Hybrid 选择框 · Nice select—创建漂亮的选择框的 jQuery 库 · Tether—使用固定定位来创建相关元素 · Shepherd.js—为应用创建新手引导 · Tooltip—tooltip
时间复杂度表示的是规模很大的一种增涨趋势,很容易就忽略系数,低阶,常数等,实际开发中排序的规模都是像10.100.1000这种小规模 3. 比较次数,交换(或移动)次数。...稳定性概念:如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。 2. 稳定性重要性:可针对对象的多种属性进行有优先级的排序。 3. ...冒泡排序只涉及相邻数据的交换,只需要常量级的临时空间,所以它的空间复杂度未O(1)是原地排序算法 稳定性:当有相邻的两个元素大小相等时,不做交换,冒泡排序是稳定的排序算法。...未排序区间的元素和已排序区间的元素相同时,它可以放在已排序区间相同值的前或后,所以为不稳定的排序 时间复杂度: 1. 最好情况:O(n2)。 2. 最坏情况:O(n2)。 3. ...答:它们的元素比较次数以及交换元素的次数都是原始数据的逆序度,是一个固定值,但是从代码实现上来看,冒泡排序的数据交换要比插入排序的数据移动要复杂,冒泡排序需要3个赋值操作,而插入排序只需要1个,他们 的时间复杂度上都是
直接插入排序的核心是 “将待排序元素插入到已排序序列的合适位置”,但它只能逐个比较相邻元素,若数据逆序程度高(比如要把最小元素移到最前面),需要大量移动操作,时间复杂度高达 O (n²)。...记录当前待插入的元素(避免后续移动时被覆盖) int target=arr[j]; // 6....内层循环:在当前子数组中,向前比较并移动元素 int b=j-i; // b是当前元素前一个同组元素的下标 // 当b>=0(未越界)且待插入元素小于前一个元素时,继续向前找 while(b>-1&&target...例如,数组{3, 3, 1}按增量 2 分组时,第一个 3(下标 0)和第二个 3(下标 1)会被分到不同组,排序后可能导致两个 3 的相对位置发生变化。...删除无用头文件: 代码中#include 未使用(strlen用于字符串长度计算,与 int 数组无关),删除后可减少编译依赖。
交互界面介绍 在移动端,排序算法可视化被放在 知识/可视排序 页签下,左上角的绿色按钮点击后启动排序,从而驱动数字列表数据变化,更新主界面产生排序的动态效果。...便于比较不排序算法下,同一组数据表现。 3. 项目的结构 这里核心代码新建了一个 algorithm 的包来单独维护,其中 algorithm/sort 文件夹中盛放排序的具体算法。...for (int i = 0; i < src.length; ++i) { //遍历当前未排序的元素,通过相邻的元素比较并交换位置来完成排序。...SortState 调用 sort 方法触发排序,会根据排序算法名,从 sortFunctionMap 中拿到排序算法调用。每次回调时触发 notifyListeners 方法通知更新。...; } 如果某个组件是数据的依赖者,在可监听对象发生变化时,会通知其更新。拿 SortButton 来说,他需要依赖排序状态 SortStatus 数据来展示不同的图标,或响应不同的事件。
第一遍循环时,从“未排序”的区段中拿出元素3,它比“已经排序”段中的元素8小,因此需要将元素8向后移动一位,留出空位让元素3插入。这次只需要移动一个元素,表中也标注了移动次数为1次。...第二遍循环时,从“未排序”的区段中拿出元素6,它比“已经排序”段中的元素3大、比元素8小,因此元素3不动,只需要将元素8向后移动一位,留出空位让元素6插入,这次移动次数也为1次。...第三遍循环时,从“未排序”的区段中拿出元素2,它比“已经排序”段中的元素2小,因此需要将元素3、元素6、元素8均向后移动一位,留出空位让元素2插入,这次移动次数为3次。...第四遍循环时,从“未排序”的区段中拿出元素7,它比“已经排序”段中的元素6大、比元素8小,因此需要将元素8向后移动一位,留出空位让元素7插入,这次移动次数为1次。...第五遍循环时,从“未排序”的区段中拿出元素9,它比“已经排序”段中的元素8大,因此“已经排序”的区段无需移动,直接在最后的位置将元素9插入,这次移动次数为0次。
插入排序 是从 未排序的数据中 找到合适的 从前面插入,不打乱顺序 更稳定,天生适合 链表的 结构 适合增删改查 节点, 移动赋值操作 冒泡排序的数据交换要比插入排序的数据移动要复杂,冒泡排序需要 3...稳定性概念:如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变。 2. 稳定性重要性:可针对对象的多种属性进行有优先级的排序。 3....四、插入排序 插入排序将数组数据分成已排序区间和未排序区间。初始已排序区间只有一个元素,即数组第一个元素。...在未排序区间取出一个元素插入到已排序区间的合适位置,直到未排序区间为空。 空间复杂度:插入排序是原地排序算法。 时间复杂度: 1. 最好情况:O(n)。 2....五、选择排序 选择排序将数组分成已排序区间和未排序区间。初始已排序区间为空。每次从未排序区间中选出最小的元素插入已排序区间的末尾,直到未排序区间为空。
例如,用户可使用鼠标选择可拖拽(draggable)元素,将元素拖拽到可放置(droppable)元素,并释放鼠标按钮以放置这些元素。拖拽操作期间,会有一个可拖拽元素的半透明快照跟随着鼠标指针。...拖拽事件 可用的拖拽事件一共有七个,其中三个是用于拖拽元素的 dragstart 在元素开始被拖动时触发 dragend 在拖动操作完成时触发 drag 在元素被拖动时触发 四个是用于释放区域的 dragenter...当被拖动元素进入到释放区所占据的屏幕空间时触发 dragover 当被拖动元素在释放区内移动时触发 dragleave 当被拖动元素没有放下就离开释放区时触发 drop 当被拖动元素在释放区里放下时触发步骤...(' ~ dragenter 触发啦'); } // 当被拖动元素在释放区内移动时触发 const handleDragover = (ev) => { ev.preventDefault...原生js实现拖拽排序我还没有弄,但是在vue中就非常的简单,因为我们在触发任何事件的时候,都可以拿到元素的index,我们可以靠index轻易实现。
;若顺序正确,则不交换 多轮迭代:每完成一轮遍历,序列中最大的未排序元素会 “沉” 到当前未排序部分的末尾(即确定一个元素的最终位置)。...下一轮遍历仅需处理剩余的未排序元素(范围缩小 1 个元素) 终止条件:当某一轮遍历中没有发生任何元素交换时,说明整个序列已完全有序,排序结束;若未优化,则需遍历 n-1 轮(最后一轮仅需比较前两个元素)...当发现前一个元素小于后一个元素时,立即交换它们的位置。这样较大的元素会逐步向数组前端移动。...例如对于已经有序的数组 [1, 2, 3, 4, 5],原算法仍会进行 n-1 轮比较,这是不必要的。...所以我们进行优化,我们如何判断是否拍好排序了假设排好序了,那后面的循环就不行交换了,那我们就看内层循环是否交换就行,当数组完全有序时,任何相邻元素对都不会触发交换操作,我们利用这一特性建立提前终止的判断条件
源对象事件: dragstart:源对象开始拖放,开始移动时事件触发 drag:源对象拖放过程中,移动被拖拽对象时触发 dragend:源对象拖放结束,整个拖放操作结束时触发。...过程对象事件: dragenter:源对象进入过程对象范围内,被拖拽对象进入过程对象时被触发 dragover:源对象在过程对象范围内移动,被拖拽对象在过程对象内移动时触发 dragleave:源对象离开过程对象的范围...,被拖拽对象离开目标对象时触发 拖动事件列表 每一个可拖动的元素,在拖动过程中,都会经历三个过程,拖动开始-->拖动过程中--> 拖动结束 在拖动目标上触发事件 (源元素-被拖动的元素): ondragstart...- 在元素开始被拖动时候触发——拖动什么 ondrag - 在元素被拖动时反复触发 ondragend - 在拖动操作完成时触发 释放目标时触发的事件(目的地对象): ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件...当被拖动元素进入目的地元素所占据的屏幕空间时触发 dragover 当被拖动元素在目的地元素内时触发 dragleave 当被拖动元素没有放下就离开目的地元素时触发 整个拖拽事件触发的顺序如下:
最好的情况 目标元素刚好在元素的中间,所以我们刚开始就可以停止搜索。 用大O表示法,这会被转换成Ω(1)。 冒泡排序 冒泡排序:将大值移动到数组右边,将小值移到数组的左边。...知道最大的n-1个元素将向右冒泡,因此排序可以在n-1个通过之后停止。 当重新遍历数组时,只要考虑没有排序的元素。当交换器保持为0时,就没有其他要交换的内容了。...最好的情况: 数组已经是完美排序好了,导致第一遍就没有元素交换。 用大O表示法,这会被转换成Ω(n)。 选择排序 找到最小的未排序的元素,然后将它放到排序好的列表末尾。...最坏的情况: 必须重复n次排序过程才能迭代数组中的每一个,以找到未排序元素的最小元素,将其排序。...最好的情况: 数组已经排序。此时当我们遍历每个元素时,只在未排序和已排序元素之间移动。 用大O表示法,这会被转换成Ω(n)。 递归 优雅地编码!递归与算法或函数的实现方式有关,它不是算法本身。
,在其他组可以拖动排序 delay :delay= "0", 鼠标按下后多久可以拖拽 touchStartThreshold 鼠标移动多少px才能拖动元素 disabled :disabled= "true...返回值 如果仅删除一个元素,则返回一个元素的数组。如果未删除任何元素,则返回空数组。...offsetX、offsetY :事件属性返回触发事件时 鼠标相对于事件源元素 的X,Y坐标,标准事件没有对应的属性。...clientX、clientY : 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标、垂直坐标。...pageX、pageY:事件属性返回当事件被触发时鼠标指针相对于整个页面左上角的水平坐标、垂直坐标。
具体可拆分为 3 个关键步骤: 选基准(Pivot):从数组中选择一个元素作为 “基准”(本文代码选数组第一个元素作为基准); 分区(Partition):将数组中所有小于基准的元素移到基准左边,所有大于基准的元素移到基准右边...(3)分区核心循环:while(left<right) 这是快速排序最关键的部分,目的是通过移动left和right,把数组分成 “小于基准” 和 “大于基准” 两部分。...循环结束的意义:left==right 当left和right相遇时,说明分区完成 —— 此时left(或right)的位置就是基准元素tem的 “最终排序位置”,所以执行arr[left]=tem;,...3....语言中,若数组初始化时元素个数少于定义的长度(这里定义 10 个,只给了 9 个值),未赋值的元素会默认初始化为 0,所以数组实际是[52,22,32,44,56,65,78,79,0,0]; 调用排序
冒泡排序:相邻元素交换时,仅当前者大于后者才交换,相等元素不移动。 归并排序:合并子数组时,按顺序保留相等元素的原始顺序。 计数排序:非比较排序中典型的稳定排序,通过统计频率确保相等元素顺序。...初始时,已排序区间仅包含第一个元素(单个元素默认有序),未排序区间包含剩余元素。...随着排序进行,逐步缩小增量,直到增量为 1 时,整个数组被视为一个子数组,执行最后一次插入排序(此时数组已接近有序,效率较高) 核心原理 通过大步长移动元素,快速将元素放到接近最终位置的地方,减少后续小步长插入时的移动次数...未排序区间长度减 1,已排序区间长度增 1,重复此操作直至未排序区间为空。 排序终止条件: 当未排序区间元素个数为 0 时,整个序列完成排序,已排序区间包含所有元素且有序。...冒泡排序的基本思想: 已排序区间与未排序区间划分: 将数组视为左右两部分:右侧为已排序区间(初始为空),左侧为未排序区间(包含所有元素) 初始时,已排序区间长度为 0,未排序区间为整个数组
选择排序的规则 就是重复执行以下的处理: 1.找出未排序部分最小值的位置min。 2.将min位置的元素与未排序部分的起始元素做对比,如果顺序错误则将它们进行就交换。...2.希尔排序 在算法(二)初等排序前篇[插入和冒泡排序]这篇文章中,我们讲到了插入排序,对于大规模的乱序数组,插入排序会很慢,因为它只会交换相邻的元素,元素只能一点一点的从数组的一端移动到另一端。...如果最小的元素在数组的末尾,则要将它移动到数组的开头则需要进行n-1次移动。...实现希尔排序 我们将数组分为h个数组,我们将子数组的每个元素交换到比他大的元素前面去,只需要将插入排序的将移动元素的距离1改为h即可。...,一般情况下,当h = 3 * h + 1时,希尔排序的复杂度基本维持在O(n^1.25)。
对列表进行拖动排序,尺寸改变。之前一般会使用jQuery-UI。其通过mousedown、mousemove、mouseup这三个事件来实现页面元素被鼠标拖拽的效果。...为了使元素可拖动,必须把 draggable 属性设置为 true : test[object Object] 整个拖拽事件触发的顺序如下...源对象事件: dragstart:源对象开始拖放,开始移动时事件触发 drag:源对象拖放过程中,移动被拖拽对象时触发 dragend:源对象拖放结束,整个拖放操作结束时触发。...过程对象事件: dragenter:源对象进入过程对象范围内,被拖拽对象进入过程对象时被触发 dragover:源对象在过程对象范围内移动,被拖拽对象在过程对象内移动时触发 dragleave:源对象离开过程对象的范围...,被拖拽对象离开目标对象时触发 目标对象事件: drop:源对象拖放到目标对象中,目标对象完全接受被拖拽对象时触发,可理解为在目标对象内松手时触发。
1.插入排序 插入排序比较容易想到,思路与打扑克时排列牌的顺序是类似的。...从图中可以看出这个数组分为两个部分,其中下标为0、1、2的元素为已排列部分,其余的则为未排列部分。 插入的排序规则: 将开头元素视为以排序部分。接着执行如下的处理,直到没有未排序部分。...- 取出未排序部分的开头元素赋值给临时保存数据的变量v。 - 在已排列的部分将所有比v大的元素向后移动一个位置。 - 将取出的元素v插入空位。 按照这个规则,我们来举一个简单的例子。...根据定义的这三个变量,插入排序的实现思路就是:外层循环i从1开始自增,并在每次循环开始时将a[i]的值保存在v中;内层循环则是j从i-1开始向前自减,并将比v大的元素从a[j]移动到a[j+1],并将v...经过四轮排序我们最终得到的结果为a={1,2,3,4,5} 实现冒泡排序 实现插入排序时,我们要先定义两个变量,i为循环变量,表示未排序部分的开头元素,从数组开头向末尾移动。
HashSet是无序的, 但是LinkedHashSet能保证元素添加的顺序,TreeSet能保证元素自然的顺序 如果想要自定义排序规则: 1.使用TreeSet存储 2.TreeSet内的元素需要实现...,并存入该下标元素对应的链表中 当链表的长度超过8后转化为红黑树,当红黑树的元素少于6后转化为链表 扩容触发条件:HashMap的长度>容量加载因子(160.75), 扩容大小:2倍区别: HashMap...1.选择排序 2.冒泡排序 3.快速排序 4.选择排序 5.插入排序 数据结构有哪些 数组(Array):含有下标 栈(Stack):先进后出 队列(Queue):先进先出 链表(Linked List...事务隔离级别 脏读 不可重复 幻读 未提交读 发生 发生 发生 未提交读 避免 发生 发生 可重复读 避免 避免 发生 串行化 避免 避免 避免 建一个索引,使用Like查询,左右两边都加%。...查询语句的索引起作用了,并且查询的字段也是索引本身的字段 就是覆盖索引,可避免回表查询。 执行计划时:_Extra:__Using index___ 那什么是回表?
点击标题下「大数据文摘」可快捷关注 10月14日发布《统计世界的十大算法》后,很多朋友在后台询问,哪里有“视觉直观感受 7 种常用排序算法”,今天分享给大家,感谢todayx.org。...比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 重复步骤3直到某一指针达到序列尾 将另一序列剩下的所有元素直接复制到合并序列尾 排序效果: 3....首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。 排序效果: 5....步骤: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置...希尔排序是基于插入排序的以下两点性质而提出改进方法的: 1、插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率 2、但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位
布局框架: Bootstrap: http://getbootstrap.com/ Foundation: http://foundation.zurb.com/ Uikit: http://www.getuikit.com...文档工具: JSDoc: https://github.com/jsdoc3/jsdoc Jekyll: http://jekyllrb.com/ 7....移动端 手势事件库: GMU: http://gmu.baidu.com/ Hammer.js: QuoJS: http...代码规范 Code Guide: http://alloyteam.github.io/code-guide/ 编写可维护的CSS: http://segmentfault.com/a/1190000000388784...HTML5 Canvas D3:http://d3js.org/ KINETIC:http://kineticjs.com/