您的位置是:网站首页>Javascript编程Javascript编程

一分钟彻底理解JavaScript冒泡排序与选择排序

少儿编程网2022-01-05 15:49:19Javascript编程 人已围观 来源:少儿编程 -用户投稿

简介本篇文章我们来了解一下JavaScript中的冒泡排序与选择排序的相关知识,起泡法每次比较就要立刻交换,而选择排序是把未排序最小的数找出来与它应在的位置上的元素交换。选择排序交换次数较少,一定程度上提高了运算效率。希望对大家有帮助。JavaScript冒泡排序与选择排序冒泡排序原理:比较两个相邻的元

本篇文章我们来了解一下JavaScript中的冒泡排序与选择排序的相关知识,起泡法每次比较就要立刻交换,而选择排序是把未排序**小的数找出来与它应在的位置上的元素交换。选择排序交换次数较少,一定程度上提高了运算效率。希望对大家有帮助。aee少儿编程网-https://www.pxcodes.com

aee少儿编程网-https://www.pxcodes.com

JavaScript冒泡排序与选择排序aee少儿编程网-https://www.pxcodes.com

冒泡排序aee少儿编程网-https://www.pxcodes.com

  • 原理:aee少儿编程网-https://www.pxcodes.com

比较两个相邻的元素,将值大的元素交换到右边,直到**右边。注意核心是相邻。aee少儿编程网-https://www.pxcodes.com

  • 思路:aee少儿编程网-https://www.pxcodes.com

依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。第一轮下来数组中**大的数会排在**后面。aee少儿编程网-https://www.pxcodes.com

第二轮:然后数组再剩余的数中从第一个数依次比较相邻的数,将**大的数排在**后面。aee少儿编程网-https://www.pxcodes.com

重复步骤,直到排序完成。aee少儿编程网-https://www.pxcodes.com

注意:到倒数第二轮完时,**后一轮还剩一个数,肯定是**小的,所以不用排序。即就是只用排序 数组的长度减一(arr.length-1)轮aee少儿编程网-https://www.pxcodes.com

算法可视化:aee少儿编程网-https://www.pxcodes.com

aee少儿编程网-https://www.pxcodes.com

代码如下:aee少儿编程网-https://www.pxcodes.com

 <script>
        function ismaopao(arr) {
            //控制比较轮数
            for (var i = 0; i < arr.length - 1; i++) {
                //冒泡排序,两两交换,从头开始做比较(大数下沉)
                for (var j = 0; j < arr.length - 1 - i; j++) {
                    //arr.length-1-i,因为前面的判断已经找到**大的值,就不需要与找到的大数做比较了
                    if (arr[j] > arr[j + 1]) {
                        var a;
                        a = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = a;
                    }
                }
            }
            return arr;
        }
        console.log(ismaopao([6, 3, 4, 5, 2, 1]))
    </script>

结果如下:aee少儿编程网-https://www.pxcodes.com

aee少儿编程网-https://www.pxcodes.com

选择排序aee少儿编程网-https://www.pxcodes.com

  • 思路:aee少儿编程网-https://www.pxcodes.com

假设数组第一个位置的数**小,然后与后面的每一个数进行比较,只要找到更小的就交换值对应的下标,注意是下标。第一轮找一遍之后可以锁定到**小值的位置了(就是找到了下标)然后就交换值。aee少儿编程网-https://www.pxcodes.com

第二轮假设第二个位置的数**小,这时候不用管数组第一个值(因为第一轮找到已经是**小的了)然后与后面**小值交换下标,锁定后再交换值。aee少儿编程网-https://www.pxcodes.com

重复步骤,直到排序完成。aee少儿编程网-https://www.pxcodes.com

注意:到倒数第二轮完时,**后一轮还剩一个数,肯定是比前面的数都还大,所以不用排序。即就是只用排序 数组的长度减一(arr.length-1)轮aee少儿编程网-https://www.pxcodes.com

算法可视化:aee少儿编程网-https://www.pxcodes.com

aee少儿编程网-https://www.pxcodes.com

代码如下:aee少儿编程网-https://www.pxcodes.com

没有封装,大家可以自己封装一下aee少儿编程网-https://www.pxcodes.com

<script>
        //选择排序,比冒泡排序次数少
        var arr = [5, 3, 4, 2, 1]
        var min = 0; //定义一个Min为数组的下标
        for (var i = 0; i < arr.length - 1; i++) {
            min = i;
            for (var j = i + 1; j < arr.length; j++) {
                if (arr[min] > arr[j]) {
                    min = j; //交换下标,就是交换位置
                }
            }
            var a = 0;
            // 现在min的值就是对应着数组**小值的下标,
            // 然后再用下标为i对应数组中的值来交换,i随着每一轮的变化而变化
            a = arr[min];
            arr[min] = arr[i];
            arr[i] = a;
        }
        console.log(arr);
    </script>

结果如下:aee少儿编程网-https://www.pxcodes.com

aee少儿编程网-https://www.pxcodes.com

相关视频教程推荐:jQuery视频教程

以上就是一分钟彻底理解JavaScript冒泡排序与选择排序的详细内容,更多请关注少儿编程网其它相关文章! aee少儿编程网-https://www.pxcodes.com

来源:php中文网aee少儿编程网-https://www.pxcodes.com


相关文章:

支持一下 ( )

一分钟彻底理解JavaScript冒泡排序与选择排序

      匿名评论
    • 评论
    人参与,条评论
    一分钟彻底理解JavaScript冒泡排序与选择排序

微信公众号

免费视频教程

先知道