JS 剖析选择排序思路

选择排序代码

(代码不是重点,重点是思路)




    
    Document
    


    

理解:(这个只是便于理解我这样拆分的)
我们先不管第二个for循环,先看把第二个for循环剔除后的

  var arr = [9,8,7,5,6];
    console.log(arr);
    // 确定行的循环
    for(var i=0;i

看完后,结果这个换来换去就是本身,是不是没意思,那么我拆开的意义是什么?想让大家明白这段代码的意义就是保存“”最小值“”(第二个for循环if执行就是最小值的替换,不执行那本来的顺序就是对的,没必要去换),那我们又如何取得最小值,下面我们看一下for循环。

   for(var j=i+1;j arr[j]){
                // 如果不是,保存真正的最小值
                ls = arr[j];
                // 最小值的索引
                lsIndex = j;
            }
        }
        // 一轮结束后,确定了最小值,能拿到最小值的索引,交换
        // 先将第一位,放在最小值的位置
        arr[lsIndex] = arr[i];
        // 再将最小值,放在第一位
        arr[i] = ls;

这里的易错点在于,要先将最大值移过去,为什么?因为我们建立的是最小值的容器,假如我们先让最小值过去,最大值就会被覆盖消失,那这容器还有什么意义呢?所以我们要先移最大值再去移动最小值。难点就是有一点点绕,梳理清楚就好。
有什么问题评论区给我留言吧(* ^ ▽ ^ *)

你可能感兴趣的:(JAVASCRIPT,javascript)