选择排序精简理解

原理:遍历数组,从第一个开始,将其与剩余的元素进行比较,记录最小的元素及其所在的位置,结束后,将其与应该放到的位置上的元素对调,直到完成排序。

借用网上的动图直观的看下:

思想:两个循环,外循环记录位置及进行最后的交换,内循环进行比较及确定最小的元素。

上代码:

  /**
     * @param {Object} array    需要排序的数组
     */
    function selectSort(array){
        var len = array.length;        //数组的长度
        for(var i = 0; i < len;i++){
            var min = array[i];        //定义最小的数字
            var param;                //过度元素
            var index = i;            //最小的数字的位置
            for(var j = i+1;j < len;j++){
                if(min > array[j]){        //碰到更小的记录位置,及其值
                    min = array[j];
                    index = j;
                }
            }
            param = array[i];        //交换位置
            array[i] = min;
            array[index] = param;
        }
        return array;
    }
    
    var arr = [11,2,3,5,7,1,4,6,15,5,2,7,9,10,15,9,17,12];
    console.log("原数据:"+arr);
    console.log("排序后:"+selectSort(arr));

力求精简,有错指出,谢谢。

 

posted @ 2019-08-02 14:00  半瓶假酒  阅读(130)  评论(0编辑  收藏  举报