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
原创粉丝点击