选择排序

选择排序

选择排序的思路就时循环比较数组里的元素,找出最小的值将其放在首位,然后依次遍历后面的元素继续寻找最小值放在第二位

实现的思路: 定义一个函数,函数接受一个数组,函数中计算出数组的长度用来遍历时使用,定义一个新数组用来放置排序后的元素,两层for循环,外层for循环作用是从第一个元素到最后一个元素依次拿出来假设为最小值进行比较,在第一次外层循环时,内层循环将它与第二个元素开始依次往后进行比较 ,当找到第一个比它小的将其设为当前最小值,在与后面的进行比较直至第一次完全遍历以便数组找出最小值,然后将这个最小值位置的元素替换为 array[i] 中的值

如图

function SelectSort(Array) {
    const n = Array.length
    console.log('length:' + n)
    let newArray = []
    for(let i = 0; i < n; i++){
        let minIndex = i
        for(let j = i + 1; j < n; j++) {
            if(Array[j] < Array[minIndex]){
                minIndex = j
            }
        }
        newArray.push(Array.splice(minIndex,1,Array[i])[0])
    }
    return newArray
}
  • 实现可自定义查找方式的方法和可选择的从大到小或从小到大排列
// 上面的排序不具备自定义顺序排序,思考提出一个函数用来让使用者决定 “排序”的定义,是从大到小还是从小到大

function findValue(array, operator = '<') {
    let Index = 0
    if(operator === '>'){
        array.forEach((e, i) => {
            if (e > array[Index]) {
                Index = i
            }
        })
        return Index
    }
    array.forEach((e, i) => {
        if (e < array[Index]) {
            Index = i
        }
    })
    return Index
}
function SelectSort_2(array, operator = '<' ,fn = findValue) {
    let newArray = []
    let length = array.length
    for (let i = 0; i< length; i++) {
        let index = fn(array,operator)
        console.log(index)
        newArray.push(array[index])
        array.splice(index, 1)
    }
    return newArray
}

转载于:https://www.cnblogs.com/daixixi/p/9388440.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值