arr

十大经典算法排序总结对比

ぐ巨炮叔叔 提交于 2020-02-28 13:31:56
十大经典算法排序总结对比 一张图概括: 主流排序算法概览 名词解释: n : 数据规模 k :“桶”的个数 In-place : 占用常数内存,不占用额外内存 Out-place : 占用额外内存 稳定性 :排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bubble Sort) 冒泡排序须知: 作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。。。冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。。。 什么时候最快(Best Cases): 当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊。。。。) 什么时候最慢(Worst Cases): 当输入的数据是反序时(写一个for循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗。。。) 冒泡排序动图演示: 冒泡排序JavaScript代码实现: function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1])

堆排序的java实现

余生长醉 提交于 2020-02-28 13:01:07
有时利用特殊的数据结构可以极大的提高计算机的运算效率,堆排序利用了完全二叉树的便捷性,提高了排序的效率,时间复杂度为O(nlogn) 递归实现: public class HeapSort { public static void main ( String [ ] args ) { int [ ] arr = new int [ ] { 30 , 42 , 7 , 66 , 3 , 51 , 67 , 21 , 19 , 45 } ; sort ( arr ) ; } public static void sort ( int [ ] arr ) { buildHeap ( arr ) ; // 构建大顶堆 for ( int a : arr ) { System . out . print ( a + " " ) ; } // 打印 67 66 51 42 45 30 7 21 19 3 System . out . print ( "\n" ) ; int temp ; for ( int i = arr . length - 1 ; i > 0 ; i -- ) { // 依次交换堆顶(最大值)到最后一个结点 temp = arr [ 0 ] ; arr [ 0 ] = arr [ i ] ; arr [ i ] = temp ; rebuildHeap ( arr , 0

js设置元素class方法小结及classList相关

佐手、 提交于 2020-02-28 12:19:30
给DOM元素设置class是我们在项目中非常容易遇到的,网上的资料和总结也比较多,下面比较全面的整理一下,希望给到大家一些帮助!并引用两种成熟的classList的兼容方法 一、el.setAttribute('class','abc'); var div = document.getElementById('d1'); div.setAttribute("class", "abc"); 兼容:IE8/9/10/Firefox/Safari/Chrome/Opera支持 IE6/7不支持setAttribute('class',xxx)方式设置元素的class。 二、el.setAttribute('className', 'abc') var div = document.getElementById('d1'); div.setAttribute("className", "abc"); 兼容:IE6/7支持 IE8/9/10/Firefox/Safari/Chrome/Opera不支持setAttribute('className',xxx)方式设置元素的class。 三、el.className = 'abc'; var div = document.getElementById('d1'); div.className = 'abc'; 兼容:所有浏览器都支持。 四

JavaScript splice() 方法

旧时模样 提交于 2020-02-28 10:54:26
定义和用法 splice() 方法用于插入、删除或替换数组的元素。 语法 arrayObject.splice(index,howmany,element1,.....,elementX) 参数 描述 index 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 howmany 必需。规定应该删除多少元素。必须是数字,但可以是 "0"。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。 elementX 可选。可向数组添加若干元素。 返回值 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。 说明 splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。 提示和注释 注释: 请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。 实例 例子 1 在本例中,我们将创建一个新数组,并向其添加一个元素: <script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John"

vue学习笔记day05 条件渲染

让人想犯罪 __ 提交于 2020-02-28 05:58:19
一 vue的条件渲染 v-if v-else-if v-else v-show v-if和v-show区别 1》v-show 没有v-else 2》v-show 不支持template 3》v-show 只是来做简单的切换(css=>display) 例子1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <!-- <div v-if="arr.length == 0">111</div> <div v-else>2222</div> --> <h1 v-if="arr.length==1">111</h1> <h1 v-else-if="arr.length==2">222</h1> <div v-else>333</div> </div> <script src="../vue.js"></script> <script> new Vue({ el:

golang实现插入排序算法

北慕城南 提交于 2020-02-28 05:50:02
//插入排序 package alg func Insertion(arr []int) []int { len := len(arr) if len <= 1 { return arr; } for i := 1; i < len; i++ { //获取当前需要插入已排序区域的元素值 val := arr[i] j := i - 1 for ; j >= 0; j-- { if arr[j] > val { //移动数据 arr[j+1] = arr[j] } else { //如果arr[j]小于arr[i],则对已排序区无需再排序 break; } } //插入排序 第一位 arr[j+1] = val } return arr } 来源: oschina 链接: https://my.oschina.net/hackdebug/blog/3158511

ES6入门(七) 数组的扩展

≯℡__Kan透↙ 提交于 2020-02-28 04:34:10
数组的扩展 1.复制数组 扩展运算符提供了复制数组的简便写法。 const a1 = [1, 2]; // 写法一 const a2 = [...a1]; 2. 合并数组 扩展运算符提供了数组合并的新写法。 const arr1 = ['a', 'b']; const arr2 = ['c']; const arr3 = ['d', 'e']; // ES5 的合并数组 arr1.concat(arr2, arr3); // [ 'a', 'b', 'c', 'd', 'e' ] // ES6 的合并数组 const newArr = [...arr1, ...arr2, ...arr3] console.log(newArr) // [ 'a', 'b', 'c', 'd', 'e' ] 3.Array.from() Array.from 方法用于将两类对象转为真正的数组 类数组对象的属性名必须为数值型或字符串型的数字,要将一个类数组对象转换为一个真正的数组,必须具备以下条件: 1、该类数组对象必须具有length属性,用于指定数组的长度。如果没有length属性,那么转换后的数组是一个空数组 2、该类数组对象的属性名必须为数值型或字符串型的数字 该类数组对象的属性名可以加引号,也可以不加引号 const obj = { 0: 1, 1: '22', 2: false,

学习03-js(内置对象,Date()日期函数,Math对象,数组,字符串对象)

老子叫甜甜 提交于 2020-02-27 23:42:45
Date()日期函数 返回当前时间 var date=new Date(); console.log(date); var date = new Date(2019, 10, 1); console.log(date); //数字型参数返回比实际月份少一个月 var date1 = new Date('2019-10-1 8:8:8'); console.log(date1); /字符型参数 日期格式 getFullYear() 获取当年 getMonth() 获取当月(0-11) getDate() 获取当天日期 getDay 获取星期几(星期0到星期6) getHours() 获取当前小时 getMinutes() 获取当前分钟 getSeconds() 获取当前秒钟 获取总毫秒数 date.valueOf() console.log(date.valueOf()); date.getTime() console.log(date.getTime()); +new Date() var date=+new Date(); Date.now() console.log(Date.now); Math对象 圆周率 Math.PI 返回一个数的最大值 Math.max(1, 8, 6) 取绝对值 Math.abs(-1) 向下取整 Math.floor(1.9) 向上取整 Math

归并排序

淺唱寂寞╮ 提交于 2020-02-27 10:50:55
时间复杂度O(nlogn),但是空间复杂度O(n). 算法 递归的将前半部分数据和后半部分数据各自归并排序 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列。 2.设定两个指针left[0]和right[0],最初位置分别为两个已经排序序列的起始位置。 3.比较两个指针所指向的元素,选择相对小的元素pop出来,append到合并空间,并移动指针到下一位置(因为用了pop函数,所以下一位置是新的left[0或right[0]). 4.重复步骤 3 直到某一指针达到序列尾,将另一序列剩下的所有元素直接复制到合并序列尾。 算法分析 采用了经典的 分治策略 ,它将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段解得的各个答案修补到一起。 图解 代码 这里我们定义两个函数,一个用于递归的进行排序,另一个用于合并两个已经排序的部分。 import math #用到math.floor函数 向下取整 def mergesort ( arr ) : #递归的拆分排序 if len ( arr ) < 2 : return arr mid = math . floor ( len ( arr ) / 2 ) left = arr [ 0 : mid ] right = arr [ mid : ] a = mergesort ( left ) b = mergesort

VBA for Excel(二)

社会主义新天地 提交于 2020-02-26 23:16:45
VBA for Excel(二) 本文涉及到的问题 没什么问题,就一些基础理论知识 计算机专业或计算机爱好者可以跳过 本文目录: 文章目录 VBA for Excel(二) 2.1 代码规范 2.2 变量 2.2.1 数据类型 2.2.2 作用域 2.2.3 对象变量 2.3 操作符 2.4 数组 2.5 流程控制 2.1 代码规范 " ' " 开头的行代表注释,也可像Dos一样使用Rem开头 用 " Dim " 定义变量,可连续定义多个但需分别指定类型,如: Dim a$,B$ 代码可使用 " + _ " 换行续写 一行存在多个语句用 " : " 间隔 引用变量方法函数对象时不区分大小写 2.2 变量 2.2.1 数据类型 数据类型 字节数 范围 Byte 1 0~255 Boolean 2 True,False Integer 2 -32768-32767 简写:% Long 4 正负20多亿 简写:& Single 4 小数,更大 简写:! Double 8 小数,更更大 简写:# Currency 8 会计用小数,足够大 简写:@ Date 8 0100年-9999年 Object 4 对象的引用 String - 足够大 简写:$ Variant - 足够大 Dim A as Integer,B as Boolean,C as Date,D as string A=1 B