「 选择排序 」虽然在实际应用中没有「 插入排序 」广泛,但它也是我们学习排序算法中必不可少的一种。「 冒泡排序 」和「 插入排序 」都是在两层嵌套循环中慢慢比较元素,不停的调整元素的位置。...第一遍大循环时,在整个数组中找到最小元素“13”,将这个最小元素“13”与数组的开头位置元素“29”进行交换。...: 元素132936515266728798下标012345678 下面我们来看一个选择排序的代码示意: 算法题:对数组arr进行从小到大的排序,假设数组arr不为空,arr的长度为n思路:采用选择排序方法...=i){ //swap方法是用于交换数组中2个位置的值(传入数组、下标),swap方法省略不写了。...选择排序为啥不是稳定性排序呢,举个例子:数组 6、7、6、2、8,在对其进行第一遍循环的时候,会将第一个位置的6与后面的2进行交换。此时,就已经将两个6的相对前后位置改变了。
HTML是什么,事实上并不重要。可是都知道。html文件,能够用浏览器打开。 HTML和XML。基本同样。仅仅只是是。HTML中节点 标记,是预先定义好的。 而XML中的节点。由文档的作者定义。...文档中的全部标记,都称之为节点。 DOM节点树中的节点分为: 元素节点、文本节点、属性节点。...元素节点:标记名称 如 html body div等 文本节点:标记的内容 如 “測试div” “p标签” 等等 属性节点:用于修饰 标记名称的。也算是 标记的属性。...假设查到的元素 不止一个,那么返回的为一个节点数组。因此在使用的时候一定不能缺少数组标号。通过childNode属性来获取全部子节点 对与节点来说。也是一种树形结构。...使用childNodes.length 获取元素节点中的全部子节点 使用的时候。
通过两个明确来完成。 明确一:这个功能的结果是什么? 是和。是功能的结果,所以该功能的返回值类型是int 。 其实就是在明确函数的返回值类型。...明确二:这个功能实现过程中是否需要未知内容参与运算? 有,行和列不确定。两个。整数 int. 需求3: 定义一个功能,比较两个数是否相等。 明确一:这个功能的结果是什么? ... } 数组的使用 获取数组中的最大值。 ...System.out.println(arr[0]);//直接打印二维数组中的角标0的一维数组。 ...[I@1fb8ee3 System.out.println(arr[0][0]);//直接打印二维数组中的角标0的一维数组中角标为0的元素。
上面提到了选择排序是不稳定的排序方法,那我们的冒泡排序是不是稳定的排序方法呢?稳定的意思指的是什么呢?...判断某排序算法是否稳定,我们可以简单理解成:排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同 如果相同,则是稳定的排序方法。...如果不相同,则是不稳定的排序方法 如果排序前的数组是[3,3,1],假定我们使用选择排序的话,那第一趟排序后结果就是[1,3,3]。...因此它不存在2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序不相同。 那么稳定排序的好处是什么?...< arrays.length - 1; i++) { //新的趟数、将角标重新赋值为0 pos = 0; //内层循环控制遍历数组的个数并得到最大数的角标
该方法有两个int型参数,:x和y,方法返回两个数中较大的一个。...以一个角标的元素和其他元素进行比较。 在内循环第一次结束,最值出现的头角标位置上。...比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。 原理:内循环结束一次,最值出现在尾角标位置。.../* 反转其实就是头角标和尾角标的元素进行位置的置换, 然后在让头角标自增。...Arrays的使用 遍历: toString() 将数组的元素以字符串的形式返回 排序: sort() 将数组按照升序排列 查找: binarySearch()在指定数组中查找指定元素
注意到在每次循环运算时,nonce还会自增+1,使得每次循环中的计算都各不相同。...用一个循环,不断调用lookup()从外部数据集中取出uint32元素类型数组,向mix[]数组中混入未知的数据。循环的次数可用参数调节,目前设为64次。...毕竟如果result[]生成过程存在被破译的途径,那么必然有方法可以更快地找到符合条件的数组,通过更快的挖掘出区块,在整个以太坊系统中逐渐占据主导。...在Clique算法中,新区块的Coinbase来自于proposals中的某个被投票地址。 上图解释了Clique.Prepare()方法中的部分逻辑。...所有认证地址基于特殊的投票地址进行动态管理,记名投票由不记名投票和投票方地址随机组合而成,杜绝重复的不记名投票,严格限制外部代码恶意操纵投票数据 在实践“去中心化”方面,以太坊还在区块结构中增加了叔区块
它使 Javascript 能够访问和操作页面的元素和样式。该模型构建在基于对象的树结构中,并定义: HTML 元素作为对象 HTML 元素的属性和事件 访问HTML元素的方法 ?...查找 HTML 元素 现在我们了解了 DOM 文档是什么,接下来就可以开始获取我们的第一个 HTML 元素了。...1var heading = document.querySelectorAll(‘h1.heading’); 在这个例子中,我们得到所有属于 heading 类的 h1 标签,并将它们存储在一个数组中...,该方法用字符串作参数,然后在文档中已经存在的 div 之前插入新的 div 元素。...第一个参数是新元素,第二个参数是要替换的元素。 直接写入HTML输出流 还可以使用 write() 方法将 HTML 表达式和 JavaScript 直接写入 HTML 输出流。
数组看似简单,但是将数组添加到语言时必须回答许多问题,例如: 数组使用固定尺寸还是可变尺寸? 尺寸是数组类型的一部分吗? 多维数组是什么样的? 空数组有意义吗?...[105], } 请注意,此标头仍指向存储在 buffer 变量中的相同底层数组。...", pathName) } 在这里, ToUpper 方法在中为 range 循环使用两个变量来捕获索引和切片元素。这种形式的循环避免在体内多次写入 p[i]。...它只复制它可以复制的内容,会关注两个参数的长度。换句话说,它复制的元素数量是两个切片长度中的最小值。这样可以节省一些记录操作。...还要注意使用空白标识符 _来丢弃循环中的索引,因为在个例子中我们不需要索引。
在多线程的情况下我们都知道尽可能不要加锁,程序一旦加锁非常影响性能,而ConcurrentHashMap大量的使用了cas操作来避免加锁带来的性能开销,而使用cas就需要用到Unsafe类 ---- 一...简介 Unsafe类相当于是一个java语言中的后门类,提供了硬件级别的原子操作,所以在一些并发编程中被大量使用。...使用的Unsafe Api arrayBaseOffset:获取数组的基础偏移量 arrayIndexScale:获取数组中元素的偏移间隔,要获取对应所以的元素,将索引号和该值相乘,获得数组中指定角标元素的偏移量...getObjectVolatile:获取对象上的属性值或者数组中的元素 getObject:获取对象上的属性值或者数组中的元素(已过时) putOrderedObject:设置对象的属性值或者数组中某个角标的元素...在获取HashEntry角标是通过key的hash值的低位进行获取,高位为Segment角标,这样就做到了一个hash获取两个数组的角标 //ConcurrentHashMap中真正存储数据的对象 static
,与数组最后一位元素交换 当只有一个数时,则不需要选择了,因此需要n-1趟排序,比如10个数,需要9趟排序 代码实现要点: 两个for循环,外层循环控制排序的趟数,内层循环找到当前趟数的最大值,随后与当前趟数组最后的一位元素交换...pos = 0; //内层循环控制遍历数组的个数并得到最大数的角标 for (int j = 0; j < arrays.length - i; j++) {...,在初始时未知是否存在有序的数据,因此将元素第一个元素看成是有序的 与有序的数组进行比较,比它大则直接放入,比它小则移动数组元素的位置,找到个合适的位置插入 当只有一个数时,则不需要插入了,因此需要n-...支点取中间,使用L和R表示数组的最小和最大位置 不断进行比较,直到找到比支点小(大)的数,随后交换,不断减小范围~ 递归L到支点前一个元素(j)(执行相同的操作,同上) 递归支点后一个元素(i)到R元素...将元素分隔开来,看成是有序的数组,进行比较合并 不断拆分和合并,直到只有一个元素 代码实现: 在第一趟排序时实质是两个元素(看成是两个已有序的数组)来进行合并,不断执行这样的操作,最终数组有序 拆分左边
使用条件 必须是有序数据 升序和降序start角标和end角标写法相反 /\*\* \* 方法描述:二分查找方法 \* \*\*/ public static int...2:递归---二分查找法 使用递归可以取消while的循环使用 /\*\* \* 递归取代while循环 \* \* \*\*/ //降序查找...归并排序的条件、使用优点 通过两个不同的有序数组,互相比较按照比较大小排序 把一个无序的数组分成N个数据,每个数据本身比较一次,之后再和下一个数组比较并合并,以此类推。...3.1:两个A,B不同的(有序)数组归并成一个C数组,结果C还是有序的。...=right){ //比较两个数组的元素大小,如:A:left=0开始到3,长度为4,B:right=4开始,长度为4,
,在 CDN 中建立了缓存,该地区的其他后续用户都能因此而受益) loading 动画 页面骨架屏 减少操作 dom 方法 优化图片加载 懒加载和预加载 减少操作 dom 方法 插入大量dom元素时,可以使用...懒加载原理 首先将页面上的图片的 src 属性设为空字符串或者一个加载中的图片,而图片的真实路径则设置在 data-original 属性中, 当页面滚动的时候需要去监听 scroll 事件,在 scroll...节点 element.parentNode 返回元素的父节点 element.childNodes 返回元素的一个子节点的数组 element.nodeName 返回元素的标记名(大写),用的时候转换小写...,可以使用 obj.key 得到想要的数据,需要的数据 key 值与数据字段作关系映射) 组件化、ESLint 代码规范,便于维护旧版本是 循环使用 if 等于需要的 key 来获取数据 for 循环的使用...,数组循环使用 for of,对象使用 for in 路由方面,使用路由懒加载 一开始页面需要加载多条请求,在 axios 统一请求拦截加上loading,和接口请求计数器+1,统一响应拦截计数器-1,
在JavaScript中,可以使用数组(Array)或链表(Linked List)等数据结构来实现队列。其实可以用窗口排队打饭为案例,先来的先排队打饭。...图片创建队列队列主要有两个基本操作: 入队(enqueue)和出队(dequeue)。在队列中,新元素被添加到队列末尾,并等待其他已存在的元素被处理后才能被移除。...可以用shift方法,shift方法会从数组中移除存储在索引0(第一个位置)的元素:this.dequeue = function(){ return items.shift(); };只有enqueue...队列查看元素查看队列头元素现在来为我们的类实现一些额外的辅助方法。如果想知道队列最前面的项是什么,可以用front方法。...队列主要有两个基本操作: 入队(enqueue)和出队(dequeue),在JavaScript中可以使用数组(Array)或链表(Linked List)等数据结构来实现队列。
在JavaScript中,可以使用数组(Array)或链表(Linked List)等数据结构来实现队列。 其实可以用窗口排队打饭为案例,先来的先排队打饭。...---- 创建队列 队列主要有两个基本操作: 入队(enqueue)和出队(dequeue)。在队列中,新元素被添加到队列末尾,并等待其他已存在的元素被处理后才能被移除。...可以用shift方法,shift方法会从数组中移除存储在索引0(第一个位置)的元素: this.dequeue = function(){ return items.shift(); }; 只有...因此可以对它们使用默认的出列操作: ---- 总结 在JavaScript中,队列(Queue)是一种具有先进先出(FIFO, First-In-First-Out)特性的数据结构,它可以用于在计算机程序中管理和存储元素...队列主要有两个基本操作: 入队(enqueue)和出队(dequeue),在JavaScript中可以使用数组(Array)或链表(Linked List)等数据结构来实现队列。
迭代器、生成器 可迭代对象:可以使用for-in遍历的对象,都是可迭代对象 在Python中如果一个对象有__iter__( )方法或__getitem__( )方法,则称这个对象是可迭代的(Iterable...);其中__iter__( )方法的作用是让对象可以用for … in循环遍历,__getitem__( )方法是让对象可以通过“实例名[index]”的方式访问实例中的元素。...能够使用for-in进行遍历,并能使用next函数进行迭代的对象 在Python中如果一个对象有__iter__( )方法和__next__( )方法,则称这个对象是迭代器(Iterator);其中__...iter__( )方法是让对象可以用for … in循环遍历,__next__( )方法是让对象可以通过next(实例名)访问下一个元素。...copy.deepcopy()深拷贝: 不仅拷贝了对象,同时也拷贝了对象中的元素,获得了全新的对象,与被拷贝对象完全独立;但这需要牺牲一定的时间和空间。 14、Python中的模块和包是什么?
在实际使用数组的过程中,数组不仅可以存储多个同类型的数据,而且要求这些数据按照某种特征进行排序。例如,学生的成绩,需要按照从高到低的顺序排列,这就需要使用排序算法。...当外层for循环的每轮选择循环体执行完毕后,i 下标的元素就是所有剩余元素中的最小值。当for外层循环执行完毕后,排序完成,输出排序后的数组元素。...i , j,作为数组元素的下标;定义了一个整型数组a,它包整型含10个元素,定义了一个整型temp,用来作为变量交换的中间值; 通过两个嵌套的for循环使用交换法对数组排序,排序过程是将数组分成两部分...—————————————————————————— 接下来,通过打印来验证一下结果对不对 1.产生1-100的随机数,并存放在数组中 接下来,就调用之前介绍三种排序方法的函数,通过打印结果来看,三种排序方法均完成了从小到大的排序...选择法排序简单、容易实现,适用于数量较小的排序,但它是不稳定的排序算法,也就是说,对应有相同关键字的记录,排序后可能会颠倒次序。 2. 冒泡法排序 在小例中,使用flag作为判断终止循环的条件。
数组的特点 1.在Java中,无论使用数组或集合,都有边界检查。如果越界操作就会得到一个RuntimeException异常。 2.数组只能保存特定类型。数组可以保存原生数据类型,集合则不能。...声明数组变量 为了使用数组必须在程序中声明数组,并指定数组的元素类型=左半部分: 先写左边明确了元素类型 是int ,容器使用数组,那么如何来标识数组?.那么用一个特殊的符号[]中括号来表示。...以一个角标的元素和其他元素进行比较。 在内循环第一次结束,最值出现的头角标位置上。...比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。 原理:内循环结束一次,最值出现在尾角标位置。.../* 反转其实就是头角标和尾角标的元素进行位置的置换, 然后在让头角标自增。
选择排序是什么? 选择排序是一种简单直观的排序算法。...选择排序思路 在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素,若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换,在剩余的array...,中找到最小的数与0下标的数进行交换,接着在1 ~ n - 1下标中找最小值与1下标交换,然后下次就是2 ~ n - 1找最小值与2交换,每次找到最小值丢到最前面,接着交换,随即下标3,4,5…直到n...空间复杂度: 该算法只使用了一个临时变量mini来记录每次循环找到的最小元素的下标。且不需要额外的数组空间。所以空间复杂度为O(1)。...实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 选择排序优化 优化方法 以上算法是每次找出最小的值放在指定位置,一共要找n-1次。
内置方法 返回值 CharAt() 它返回指定索引处的字符。 Concat() 它连接两个或多个字符串。 forEach() 它为数组中的每个元素调用一个函数。...push() 它将一个或多个元素添加到数组的末尾,并返回数组的新长度。 reverse() 反转数组元素的顺序。 问题17: JS中的变量命名约定是什么?...问题23:列出在JS代码中访问HTML元素的不同方式 下面是在JS代码中访问 html 元素的方法列表: getElementById(‘idname’): 按id名称获取元素 getElementsByClass...css样式选择器并返回第一个选定元素 问题24:JS代码在HTML文件中可以以多少种方式使用 主要有三种: 行内 内部 外部 行内方式: ......innerText:从起始位置到终止位置的内容, 但它去除Html标签 问题 34:JS中的事件冒泡是什么 事件冒泡是HTML DOM API中事件传播的一种方式,当一个事件发生在另一个元素中的一个元素中
ES6 HTML DOM DOM代表文档对象**模型。HTML 页面在浏览器中呈现。浏览器将从网络服务器下载的页面中包含的所有元素组装到其内存中。...支持 JavaScript 的浏览器能够在 HTML 页面在浏览器中呈现之后识别该页面中的各个对象,因为支持 JavaScript 的浏览器可以识别并使用 DOM。因此,允许随意控制对象的功能。...document.getElementsByName(name) getElementsByTagName(tagname): 返回文档中具有指定标记名的所有元素节点的数组。...charset: 文档的字符集。 document.charset children[]: 包含文档直接子级 HTML 元素的数组。...document.complete IE4 DOM 中的文档方法: elementFromPoint(x,y): 返回位于指定点的元素。
领取专属 10元无门槛券
手把手带您无忧上云