核心:

从 起始单元 循环至 最后一个单元
默认 起始单元的数据 是 最小值 存储 起始单元的索引下标
从 起始单元 的下一个 单元 开始 比较 数据大小
如果 之后 单元的数据大小 更小 存储 之后数据单元的索引下标
每次都是 使用 存储的索引下标 对应 单元的 对象数据, 与 之后的单元比较
先存起始 索引  比较数据 存储 较小值的 索引
每一次循环,会将最小值排序在数组的起始位置

优化:

每次都是从当前循环的起始位置的下一个位置开始内层的循环
一次循环排序出一个最小值, n 个单元 需要循环 n-1 次 完成整个数组的排序 最后一个单元没有排序比较的对象了
之前循环比较出的最小值,不再参与之后的循环比较
        var arr = [9,5,6,8,2,7,3,4,1];
        // 外层循环遍历
        for(var j = 0 ; j < arr.length-1 ; j++){
            var index = j;
            for(var i = index ; i < arr.length ; i++){ // 循环找到当前循环最小值的下标 if(arr[index] > arr[i]){
                    index = i;
            }
            // 如果得到的下标值与当前值不相同  进行内容置换
            // 将当前循环最小值放在当前位置
            if( j !== index){
                var tmp = arr[j];
                arr[j] = arr[index];
                arr[index] = tmp;
            }
        }
        console.log(arr);

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。