快速排序

459 阅读1分钟

选择排序:选择排序的思路大致是,找到数据结构中最小的,放到第一位;找到第二小的,放到第二位··· 以此类推 来实现一下选择排序

function selectionSort(arr) {
    const {
            length
    } = arr
    let indexMin
    // 开始一个内循环,从第 i 个下标开始;由于总是从 0 开始,**所以第一轮在寻找的是 最小的值,并要将找到的值放入第一位;此后的每轮都是再找 第 i 大的值 ,并放入第 i 位**
    for (let i = 0; i < length - 1; i++) {
        // 假设第 i 大的值为 i ,并约定一个变量存储
        indexMin = i
        // 开始一个内循环,从第 i 个下标开始
        for (let j = i; j < length; j++) {
            if (arr[i] > arr[j]) {
                    // 若下标为 i 的元素大于下标为 j 的元素,那么将** j **下标赋值给**约定的变量**
                    indexMin = j
            }
        }
        // 结束一轮循环, 判断下标i和indexMin是否为相等 若不相等才进行交换;此举可以跳过第一个元素 与 第一个元素的比较
        if (i !== indexMin) {
                [arr[i], arr[indexMin]] = [arr[indexMin], arr[i]]
        }
    }
    return arr
}
array = selectionSort([11, 423, 534, 1223, 5345, 745, 73, 123]) // 11,73,123,423,534,745,1223,5345
console.log(array.join(), '新的排序---')

方法二:

const arr = [10, 4, 5, 6, 3, 1]
for (let i = 0, len = arr.length, min; i < len; i++) {
        min = arr[i]
        for (let j = i + 1; j < len; j++) {
                if (arr[j] < min) {
                        let c = min;
                        min = arr[j]
                        arr[j] = c
                }
        }
        arr[i] = min
}
console.log(arr);