十大排序----选择排序(记下标)

245 阅读1分钟
    var arr = [8,5,3,2,1]

    //第一轮
    //先找到最小值 , 再和第一个位置进行交换

    //假设第一个位置上的数最小
    var min = 0; //因为第一个数的下标为零,所有这里等于0
    //拿第一个位置上的数与后面的所有值比较
    for(var i = 1 ; i < arr.length ; i++) { //从第二个数遍历 所有下标i为1
        if(arr[min] > arr[i]) {  //开始比较,当第一个数值大于第二个数值时
            min = i             //用min 记住他的下标 
        }
    }
    console.log(min); //此时的min是下标 相当于一个记数的

    // 拿到最小值以后,与第一个位置上的值交换
    var t = arr[0] ;
    arr[0] = arr[min] ;
    arr[min] = t ;
    // 1 5 3 2 8



    // 第二轮
    //  假设第二个位置上的数最小
    var min = 1 ;
    for(var i = 2 ; i < arr.length ; i++) {
        if(arr[min] > arr[i]) {
            min = i 
        }
    }
    console.log(min);
    // 拿到最小值以后,与第一个位置上的值交换
    var t = arr[1] ;
    arr[1] = arr[min] ;
    arr[min] = t ;
    // 1 2 3 5 8

    // 第三轮  
    //   假设第三个位置上的数最小
    var min = 2 ;

    //第四轮
    
    

image.png