JavaScript最简单的三种排序算法(冒泡,选择,插入)

本文详细介绍了三种基本排序算法:冒泡排序、选择排序和插入排序。冒泡排序通过不断交换相邻元素实现最大值下沉;选择排序每次找出未排序部分的最小值放至前面;插入排序则通过比较将每个元素插入到已排序部分的正确位置。三种算法的时间复杂度均为O(n^2),适合小规模数据排序。
摘要由CSDN通过智能技术生成

分别是冒泡排序,选择排序,插入排序

冒泡排序 

算法的思想是将第一个元素与第二个元素作比较,如果第一个比第二个元素大的话,则交换他们的位置,这样一轮下来能将最大的元素排在最后,如此遍历n-1轮

Array.prototype.bubbleSort = function(){
    //总共要进行i次排序
    for(let i = 1; i<this.length-1; i++){
        //这是进行一次排序,每排好一次就会减少一次,所以循环也减去i
        for(let j = 1; j<this.length-1-i; j++){
            if(this[j]<this[j+1]){
                //交换
                const temp = this[j]
                this[j] = this[j+1]
                this[j+1] = temp
            }
        }
    }
}
​
const arr = [5,4,3,2,1]
arr.bubbleSort()
//[1,2,3,4,5]

时间复杂度:O(n^2),性能不是很好

选择排序

找到数组中的最小值,将他放在第一位,再找出剩余的最小值将它放在第二位,如此循环n-1轮

Array.prototype.selectSort = function(){
    //总共进行length -1次排序
    for(let i = 0; i<this.length -1; i += 1){
        let indexMin = i
        for(let j = i; j<this.length; j+=1){
            //找出从i开始到最后中最小的值
            if(this[j] < this[indexMin]){
                indexMin = j
            }
        }
        //把最小值放在最前面
        if(indexMin != i){
            const temp = this[i]
            this[i] = this[indexMin]
            this[indexMin] = temp
        }
    }
}

const arr = [5,4,3,2,1]
arr.selectSort()

时间复杂度:O(n^2)

插入排序

从第二个数开始往前比,如果比第二个数大的话就往后排,以此循环

Array.prototype.insertionSort = function(){
    for(let i = 0; i<this.length; i++){
        const temp = this[i]
        let j = i
        // 对j进行一次次循环向前比
        while(j > 0){
            // 如果前一个比这个大 则交换
            if(temp[j-1] > temp){
                this[j] = this[j-1]
            }else{
                break
            }
            j--
        }
        // 取到的j就为应该插入的地方,将此处的值改为this[i]
        this[j] = temp
    }
}

const arr = [5,4,3,2,1]
arr.insertionSort()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值