排序算法

手机软件开发 2024-9-14 17:18:01 34 0 来自 中国
1、冒泡排序(最底子的排序)O(n^2)
        //冒泡排序焦点点 俩个for循环嵌套 第一个趟数 相当于length-1 第二个每趟比力的时间是递减的
        //相邻的俩个相比 j和j+1相比
        function bubble(arr) {
            //遍历数组
            for (var i = 1; i < arr.length; i++) {
                //判断对应的没有比力的值 没有确定位置的值
                for (var j = 0; j < arr.length - i; j++) {
                    //相邻的俩个进行比力
                    if (arr[j] > arr[j + 1]) {
                        //换位置
                        var temp = arr[j]
                        arr[j] = arr[j + 1]
                        arr[j + 1] = temp
                    }
                }
            }
            return arr
        }
        var arr = [10, 18, 58, 78, 48, 38]
        console.log(bubble(arr));
2、选择排序(选择最大值 大概最小值的下标 进行比力的排序)
        function selecter(arr) {
            //遍历数组
            for (var i = 0; i < arr.length; i++) {
                var min = i //记载最小下标 默认当前的i值
                for (var j = i + 1; j < arr.length; j++) { //遍历反面的内容
                    //如果当前值比最小值还小
                    if (arr[j] < arr[min]) {
                        //记载一下这个下标
                        min = j
                    }
                }
                //判断当前最小下标是否为开始的默认下标 不是就换位置
                if (min != i) {
                    //换位置
                    var temp = arr[min]
                    arr[min] = arr
                    arr = temp
                }
            }
            return arr
        }
        var arr = [18, 58, 68, 38, 78, 28, 8]
        console.log(selecter(arr));
3、快速排序(在数据量低于十万内最快的  在数据量不多的情况下最快的  是冒泡排序的进阶)二分O(nLogn)
        function quick(arr) {
            if (arr.length <= 1) {
                return arr
            }
            //定义左边的数组 右边的数组 基数
            var left = []
            var right = []
            var mif = arr[0]
            //遍历数组
            for (var i = 1; i < arr.length; i++) {
                arr > mid ? right.push(arr) : left.push(arr)
            }
            return quick(left).concat([mid], quick[right])
        }
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 23:28, Processed in 0.156865 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表