JavaScript的冒泡、插入、自执行的知识点
来源:互联网 发布:c语言初级题 编辑:程序博客网 时间:2024/06/08 10:24
这是一篇Js的知识点的总结也可以叫做笔记。就是说有可能有的朋友不需要,有可能有的朋友需要,所以我就记录一下,这也是丰富本人的知识经验而写。
1、我们首先了解冒泡排序的思想。
1》冒泡排序:是一种计算机科学领域的较简单的排序方法。
2》思路:冒泡排序算法的运作如下:(从前到后) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2、冒泡排序
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>JavaScript的冒泡/插入/自执行函数</title></head><body> <!--这是引入JS;charset是语言编码格式--> <script type="text/javascript" charset="UTF-8"> /* Bubble sort (冒泡排序) @arrayObject 是要传入的数组,就是要排序的对象 */ function bubbleSort(arrayObject) { /* 1.创建三个对象arrayLength/i和j. arrayLength: 表示数组的长度. i:表示比较的轮数 j:表示每轮要比较的次数 */ var arrayLength= arrayObject.length,i,j; /* 开始进行比较 */ for (i=0;i<arrayLength;i++){ /* 1.进行比较相邻两个元素的大小 2.arrayLength-i: 表示是每轮比较的次数,例如: var arr = [4,3,6,1,5]; 分析: 第一轮比较 1:4 第一次:4>3 ——>[3,4,6,1,5] 第二次:4>6 ——>[3,4,6,1,5] 第三次:6>1 ——>[3,4,1,6,5] 第四次:6>5 ——>[3,4,1,5,6] 第二轮比较 2:3 第一次:3>4 ——>[3,4,1,5,6] 第二次:4>1 ——>[3,1,4,5,6] 第三次:4>5 ——>[3,1,4,5,6] 第三轮比较 3:2 第一次:3>1——>[1,3,4,5,6] 第二次:3>4——>[1,3,4,5,6] 第四轮比较 4:1 第一次:1>3——>[1,3,4,5,6]; 注释: 从以上轮次我们可以看出,比较的轮次和每轮次数的关系 */ for (j=0;j<arrayLength-i;j++){ if (arrayObject[j]>arrayObject[j+1]){ /* 创建一个中间替换变量*/ var temp = arrayObject[j]; arrayObject[j] = arrayObject[j+1]; arrayObject[j+1] = temp; } } } /* 返回排序好的数组*/ return arrayObject; } /* 我们开始测试,上述我们写的方法 1.创建一个要排序的数组 */ var arrayNumber = [23,2,14,4,56]; /* 我们调用冒泡排序的函数.并输出*/ console.log(bubbleSort(arrayNumber)); /* 1.上述输出 [2, 4, 14, 23, 56] */ </script></body></html>
3、插入排序
<script type="text/javascript" charset="UTF-8"> /* 1.插入排序的思想 插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上, 直到全部插入完为止。 2.插入排序的步骤过程 直接插入排序的算法思路: (1) 设置监视哨r[0],将待插入纪录的值赋值给r[0]; (2) 设置开始查找的位置j; (3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止; (4) 将r[0]插入r[j+1]的位置上。 */ /* 首先了解几个知识点 1>> push() 1.push(): 方法可以向数组的末尾添加一个或者多个元素,并返回数组长度. 2.push()的语法 arrayObject.push(newelement1,newelement2,....,newelementX) 参数描述 newelement1必需。要添加到数组的第一个元素。 newelement2可选。要添加到数组的第二个元素。 newelementX可选。可添加多个元素。 返回值 把指定的值添加到数组后的新长度。 3.说明 push() 方法可把它的参数顺序添加到 arrayObject 的尾部。它直接修改 arrayObject,而不是创建一个新的数组。 push() 方法和 pop() 方法使用数组提供的先进后出栈的功能。 4.提示和注释 注释:该方法会改变数组的长度。 提示:要想数组的开头添加一个或多个元素,请使用 unshift() 方法。 2>>shift() 1.shift():方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。 2.shift()的语法 arrayObject.shift() 返回值 数组原来的第一个元素的值。 3.说明 如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。 请注意,该方法不创建新数组,而是直接修改原有的 arrayObject。 4.提示和注释 注释:该方法会改变数组的长度。 提示:要删除并返回数组的最后一个元素,请使用 pop() 方法。 3>> unshift():方法可向数组的开头添加一个或更多元素,并返回新的长度。 1.unshift()的语法 arrayObject.unshift(newelement1,newelement2,....,newelementX) 参数描述 newelement1必需。向数组添加的第一个元素。 newelement2可选。向数组添加的第二个元素。 newelementX可选。可添加若干个元素。 返回值 2.说明 unshift() 方法将把它的参数插入 arrayObject 的头部,并将已经存在的元素顺次地移到较高的下标处,以便留出空间。 该方法的第一个参数将成为数组的新元素 0,如果还有第二个参数,它将成为新的元素 1,以此类推。请注意,unshift() 方法不创建新的创建,而是直接修改原有的数组。 3.提示和注释 注释:该方法会改变数组的长度。 注释:unshift() 方法无法在 Internet Explorer 中正确地工作! 提示:要把一个或多个元素添加到数组的尾部,请使用 push() 方法。 4>>splice() 1.splice():方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组。 2.语法 arrayObject.splice(index,howmany,item1,.....,itemX) 参数描述 index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, ..., itemX可选。向数组添加的新项目。 返回值 类型描述 Array包含被删除项目的新数组,如果有的话。 3.说明 splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。 如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。 4. 提示和注释 注释:请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。 */ function insertionSort(arrayObject) { /* 创建一个存储数组 */ var tempArray = []; /* 我们要向tempArray 中添加第一个元素 */ tempArray.push(arrayObject.shift()); /* 注释: arrayObject.shift() 后,我们传入的数组就发生变化,shift()改变了原数组.请看知识点. 现在 arrayObject 的第一个元素别截取调,从新创建一个新的数组. */ /* 创建两个参数 1. i : 表示arrayObject的元素索引 2. j : 表示tempArray的元素索引 */ var i,j; for (i=0;i<arrayObject.length;i++){ for (j=0;j<tempArray.length;j++){ /* 1. 从arrayObject中,拿出第一个元素和tempArray 中的所有元素相比 */ if (arrayObject[i]>tempArray[j]){ /* 进行多种情况处理*/ /* 判断最后,的情况,就是最后,也没有找到比自己大的数,那就将其追加到tempArray的最后*/ if (j==tempArray.length-1|| tempArray.length==1){ tempArray.push(arrayObject[i]); break; } }else { /* 多种情况的处理*/ /* 首先判断tempArray现在里面有几个元素*/ if(tempArray.length==1||j==0){ /* 将其添加到tempArray的第一个*/ tempArray.unshift(arrayObject[i]); /* 终止本次循环*/ break; }else { /* 就是tempArray的元素个数不为1时候,我们就是要实现出插入处理*/ tempArray.splice(j,0,arrayObject[i]); /* 警告的注释:splice(j,0,arrayObject[i])中的j,不能想成tempArray的元素索引. 这里是元素在tempArray中的位置*/ break; } } } } /* 返回处理好的数组*/ return tempArray; } /* 我们进行测试*/ var insertArrayNumber = [23,12,3,45,1,456]; /* 调用函数*/ console.log(insertionSort(insertArrayNumber)); /* 结果: [1,3,12,23,45,456] */ </script>
4、自执行函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>自执行函数</title></head><body> <script type="text/javascript" charset="UTF-8"> // 第一种:最前最后加括号 (function () { alert('第一种自执行函数'); }()); // 第二种:function外面加括号 (function () { alert('第二种自执行函数'); })(); // 第三种:function 前面加运算符,常见的是 ! 和 void,+ // ! 号 !function () { alert('第三种自执行函数'); }(); // 运算符 +function () { alert('第五种自执行函数'); }(); // void void function () { alert('第四种自执行函数'); }(); // 注释: 推荐第一种写法 </script></body></html>
0 0
- JavaScript的冒泡、插入、自执行的知识点
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- Javascript的匿名函数与自执行
- JavaScript匿名自执行函数的用处
- Javascript的匿名函数与自执行
- JavaScript匿名自执行函数的定义
- 自改的冒泡
- 浅谈javaScript的 this指向重绑定 与 函数自执行用法 与 自执行指向
- 冒泡、插入排序的比较
- javaScript的冒泡
- Javascript的事件冒泡
- SVN使用相关命令详解
- Spring中配置数据源
- writeValueAsString
- rem与media标签实现移动端屏幕适配
- 安装jupyter notebook方法
- JavaScript的冒泡、插入、自执行的知识点
- 单点登录原理与简单实现
- java判断某个点是否在所画范围内(多边形)
- 【sublime xftp插件】 Host key verification failed ,错误处理
- android源码开发常用的几个命令
- 润乾报表v4-填报分页自动计算页数
- 程序猿找工作笔试面试那些事儿--操作系统常考知识点总结
- 抽取word中的背景图
- ReactiveCocoa:理解和使用RACCommand