快排和计数排序算法

  1. 快速排序
let quicksort=(arr)=>{
    if (arr.length <= 1) { return arr }
    let midIndex = Math.floor(arr.length/2)
//重要 自己原来犯了错误,直接传了arr(midIndex),陷入了死循环
    let middleVal = arr.splice(midIndex, 1)[0]
    console.log('middleVal')
    console.log(middleVal)
    let left =[]
    let right =[]
    for(let i =0;i<arr.length;i++){
        console.log(arr[i])
        if(arr[i]<middleVal){
            left.push(arr[i])
            console.log('left')
            console.log(left)
        }else{
            right.push(arr[i])
            console.log('right')
            console.log(right)
        }
    }
//利用递归实现整个数组的排序
    return  quicksort(left).concat([middleVal],quicksort(right))
}
  1. 计数排序
let countSort = (arr) => {
    let hashTable = {}
    let max = 0
    let sortArr = []
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] in hashTable) {
            hashTable[arr[i]] += 1
        } else {
            hashTable[arr[i]] = 1
        }
     //更新最大值max
        if (arr[i] > max) {
            max = arr[i]
        }
    }
    console.log(hashTable)
    //小于等于<=max 少了等于号最大值不能输出
    for (let j = 0; j <=max; j++) {
        for (let i = 0; i < hashTable[j]; i++) {
            sortArr.push(j)
        }
    }
    return sortArr
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容