前端第二周,Javascript--选择排序

本文详细介绍了选择排序算法在JavaScript中的实现过程,通过示例展示了如何通过嵌套循环不断找到并交换数组中最小元素的位置,最终得到有序数组。

选择排序:

              1.首先从原始数组中找到最小的元素,并且把该元素放在数组的最前面,

              2.然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。 


 

        var numarr = [84, 36, 92, 43, 19, 28, 11, 12];

        // c

        //     m

        //                 m

        //                         m

        //[11,36,92,43,19,28,84,12];

        //     c

        //              m

        //                       m

        //[11,12,92,43,19,28,84,36];

        //        c

        //           m

        //              m

        // [11,12,19,43,92,28,84,36];

        //           c

        //                 m

        // [11,12,19,28,92,43,84,36];

        //              c

        //                 m

        //                       m

        // [11,12,19,28,36,43,84,92];

        //                 c

        // [11,12,19,28,36,43,84,92];

        //                    c

        // [11,12,19,28,36,43,84,92];

        console.log(numarr);//[84, 36, 92, 43, 19, 28, 11, 12]

        //控制数组完成排序需要多少论比较

        for (var i = 0; i < numarr.length - 1; i++) {

            // 比较开始前先假设最小值,第几轮开始,就先假设第几个最小值,

            //使用变量将假设的最小值索引保存

            var minindex = i;

            //循环和 初始假设的最小值比较的数项组

            for (var j = i + 1; j < numarr.length; j++) {

                //判断如果假设的最小值,比后面的值 大

                if (numarr[minindex] > numarr[j]) {

                    //就将当前比较出小的值索引 作为新的假设值

                    minindex = j;

                }

            }

            //内层循环结束,最终minindex就是最小值得索引,实现和初始假设值得索引交换位置

            var tp = numarr[i];

            numarr[i] = numarr[minindex];

            numarr[minindex] = tp;

        }

        console.log(numarr);// [11, 12, 19, 28, 36, 43, 84, 92]
 


        //封装选择数组排序得方法:

        function selectSort(numarr) {

            //控制数组完成排序需要多少轮

            for (var i = 0; i < numarr.length - 1; i++) {

                // 比较开始前先假设最小值,第几轮开始,就先假设第几个最小值,

                //使用变量假设得最小值索引保存

                var minindex = i;

                // 循环和 初始假设的最小值比较的数组项

                for (var j = i + 1; j < numarr.length; j++) {

                    // 判断如果假设的最小值,比后面的值 大

                    if (numarr[minindex] > numarr[j]) {

                        // 就将当前比较出小的值的索引 作为新的假设值

                        minindex = j;

                    }

                }

                var tp = numarr[i];

                numarr[i] = numarr[minindex];

                numarr[minindex] = tp;

            }

            // 返回排序后的数组

            return numarr;

        }

        var arr = selectSort([8, 2, 4, 1, 6, 7, 9]);

        console.log(arr);//[1, 2, 4, 6, 7, 8, 9]

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值