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>

运行结果:

 

原文地址:https://www.cnblogs.com/icy-shower/p/12538896.html