排序算法(常见的排序算法的时间复杂度 O(n2))

复制代码
排序算法(常见的排序算法的时间复杂度 O(n2))

1.冒泡排序(俩俩(相邻的俩个)相比 位置交换)O(n2)

```js
//冒泡排序
function bubleSort(arr){
    //冒泡排序 外层的轮数
    for(var i=0;i<arr.length-1;i++){
        //控制比较的次数
        for(var j=1;j<arr.length-i;j++){
            //j和j-1 俩俩进行比较
            if(arr[j]<arr[j-1]){
                //换位置
                var temp = arr[j]
                arr[j] = arr[j-1]
                arr[j-1] = temp
            }
        }
    }
    return arr
}

```

2.选择排序 (选择一个值 跟所有的值进行比较 然后这个值不是开始的 就换位置)O(n2)

```js
//选择排序
function selectorSort(arr){
    for(var i=0;i<arr.length-1;i++){
        //将当前的i值当做最大值
        var max = i
        for(var j = i+1;j<arr.length;j++){
            //判断当前的最大值小于j下标所在的值
            if(arr[max]<arr[j]){
                max = j
            }
        }
        //判断当前的最大值不是开始设置的值 要进行位置交换
        if(max != i){
            var temp = arr[i]
            arr[i] = arr[max]
            arr[max] = temp
        }
    }
    return arr
}

```

3.快速排序(冒泡排序的进阶 二分法)O(nlogn)

```js
//快速排序
function quikSort(arr){
    //当我们的数组里面只有一个元素或者一个元素都没有的时候 退出返回这个数组
    if(arr.length <= 1){
        return arr
    }
    //取基数值 取第一个
    var mid = arr[0]
    var left = []
    var right = []
    //for循环 拿出所有的值跟中间值比较
    for(var i=1;i<arr.length;i++){
        arr[i]>=mid?right.push(arr[i]):left.push(arr[i])
    }
    return quikSort(left).concat([mid],quikSort(right))
}

```

复制代码

 

4.插入排序

5.希尔排序(插入排序的进阶)

6.堆排序

7.桶排序

8.基数排序

9.归并排序(大数据排序)

....
posted @   後楓浪  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示