选择排序

295 阅读1分钟

什么是选择排序

选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。

   
       
        var arr = [9, 3, 6, 2, 4, 1, 8, 5, 7]
        // 下标    0  1  2  3  4  5  6  7  8
        console.log('原始数组arr: ', arr)

        /**
         *          第几次循环   假设谁是最小值     和谁交换    循环开始的值
         *  k == 0      1               0           0               1
         *  k == 1      2               1           1               2
         *  k == 2      3               2           2               3
         *  
        */

        for (var k = 0; k < arr.length; k++) {
            var minIndex = k    // 假设当前最小数值 为 下标 0 的项
            for (var i = k + 1; i < arr.length; i++) {
                if (arr[minIndex] > arr[i]) {
                    minIndex = i
                }
            }
            // 交换 真实最小的值  与 下标 0 的值
            var temp = arr[k]
            arr[k] = arr[minIndex]
            arr[minIndex] = temp
        }
        console.log('选择排序结束后的 arr: ', arr)


        // // 第二轮
        // var minIndex = 1    // 假设当前最小数值为 下标 1 的项
        // for (var i = 2; i < arr.length; i++) {
        //     if (arr[minIndex] > arr[i]) {
        //         minIndex = i
        //     }
        // }
        // // 交换 真实 最小的值 与 下标 1 的值
        // var temp = arr[1]
        // arr[1] = arr[minIndex]
        // arr[minIndex] = temp
        // console.log('第二轮 选择排序结束后的 arr: ', arr)

        // // 第三轮
        // var minIndex = 2
        // for (var i = 3; i < arr.length; i++) {
        //     if (arr[minIndex] > arr[i]) {
        //         minIndex = i
        //     }
        // }
        // 交换 真实 最小的值 与 下标 2 的值
        // var temp = arr[2]
        // arr[2] = arr[minIndex]
        // arr[minIndex] = temp
        // console.log('第三轮 选择排序结束后的 arr: ', arr)