zoukankan      html  css  js  c++  java
  • JavaScript冒泡排序、选择排序、数组去重

    【逆战班】

    1.冒泡排序

    原理:依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。

    实现代码:

    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
        <meta charset="UTF-8">
    
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
        <title>Document</title>
    
    </head>
    
    <body>
    
        <script>
    
            var arr = [5,4,3,2,1];
    
            for(var j = 0 ; j <= (arr.length-1) -1 ; j++){
    
                // 外层循环,循环执行排序操作,循环次数是数组单元个数-1
    
                for (var i = 0; i <= arr.length-2 - j ; i++) {
    
                    // 内层循环,每次循环比较一个最大值
    
                    // 上一次比较出的数值,不参与下一次循环 -j
    
                    // 当次循环的最后一个单元,通过倒数第二个单元,参与比较不参与循环 -1
    
                    if (arr[i] > arr[i + 1]) {
    
                        //判断相邻两个数的大小,如果前面大则交换存储的数据
    
                        var middle = 0;
    
                        middle = arr[i];
    
                        arr[i] = arr[i + 1];
    
                        arr[i + 1] = middle;
    
                    }
    
                }
    
            }   
    
            console.log(arr);//控制台输出查看结果
    
        </script>
    
    </body>
    
    </html>

    运行结果:

     

    2.选择排序

    首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。

    实现代码:

    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
        <meta charset="UTF-8">
    
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
        <title>Document</title>
    
    </head>
    
    <body>
    
        <script>
    
            var arr = [5,4,3,2,1];
    
            for(var j = 0 ; j <= arr.length-1; j++){
    
                // 外层循环,实现排序循环次数,次数是单元个数 -1
    
                // 先默认起始位置就是最小值位置,存储起始位置的索引,也就是 j
    
                var min = j;
    
                // 默认的最小值位置是当前循环的起始位置,是j 
    
                for(var i = j+1 ; i <= arr.length-1 ; i++){
    
                    // 比较,要从下一个位置开始,内层循环起始,是比较的起始位置+1开始循环
    
                    if(arr[min] > arr[i]){//判断当前数值与下一个数值大小,如果大于下一个数值,则min的值变为i
    
                        min = i;// 变量中,存储当前较小值的索引下标
    
                    }
    
                }
    
                
    
                if(min != j){
    
                    // 内层循环执行完毕,存储的索引下标如果不是起始的索引j,就交换 min中存储的索引下标对应的数值 和 j索引下标应的数值
    
                    var m = 0;
    
                    m = arr[j];
    
                    arr[j] = arr[min];
    
                    arr[min] = m;
    
                }
    
            }
    
     
    
            console.log(arr);//控制台输出查看结果
    
     
    
        </script>
    
    </body>
    
    </html>

    运行结果:

     

    3.数组去重

    这里主要讲通过indexOf()方法对数组进行去重的操作。

    思路:建立一个新的数组,将原始数值中的数值,向新的数组中写入,如果这个数值不存在于新的数组中,就执行写入,如果已经存在,就不写入。建立一个空数组,来存储原始数组中不重复的数据。

    实现代码:

    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
        <meta charset="UTF-8">
    
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
        <title>Document</title>
    
    </head>
    
    <body>
    
        <script>
    
            var arr=[1,2,1,3,1,4,2,3,4]; //定义一个数组
    
            var newarr=[]; //定义一个空数组用来存储原始数组中不重复的数据
    
            for(var i=0;i<=arr.length-1;i++){
    
                if(newarr.indexOf(arr[i])===-1){ //newarr.indexOf(arr[i]) 执行结果如果是 -1,证明在新数组中,没有这个原始数组的数据
    
                    newarr.push(arr[i]);//在newarr数组中添加arr[i]
    
                }
    
            }
    
            console.log(newarr);//控制台输出查看结果
    
        </script>
    
    </body>
    
    </html>

    运行结果:

     

  • 相关阅读:
    Golang关键字—— var
    Ubuntu下搭建Golang开发环境
    CentOS安装MongoDB
    使用2-3法则设计分布式数据访问层
    8 种提升 ASP.NET Web API 性能的方法
    MongoDB 聚合之 MapReduce
    常用开源项目及工具汇总——持续更新
    了解一下jsp
    前苹果副总裁:如果你做的事情毫不费力,就是在浪费时间
    思考
  • 原文地址:https://www.cnblogs.com/icy-shower/p/12538896.html
Copyright © 2011-2022 走看看