美文网首页
封装一个快速排序方法

封装一个快速排序方法

作者: 楠楠_c811 | 来源:发表于2019-01-02 11:04 被阅读14次

    来封装一个快速排序方法吧。

    思路:

    1.在数组中取一个中间值,将数组一分为二;
    2.判断每个数,小于中间值的放左边,大于中间值的放右边;
    3.将这几个数组连接输出。

    大概思路就是这个,具体实现看代码吧,反正我的注释一向写的像作文,估计少有看不明白的。

              // 封装一个函数 传参arr 
            function mySort(arr){
                // 判断如果只有一位或者小于1
                if(arr.length <= 1){
                    // 将当前数组返回
                    return arr;
                }
                // 将数组一分为二向下取整并赋值
                let num = Math.floor(arr.length/2);
                // 将上一步获取到的数组的下标截取对应值重新赋值
                // splice可以将中间值不纳入比较范围
                let numValue = arr.splice(num,1);
                // 设置一左一右两个空数组
                let left = [];
                let right = [];
                // 循环数组
                for(let i = 0 ; i < arr.length ; i ++){
                    // 判断如果小于中间值就放到left,否则放right
                    if(arr[i] < numValue){
                        left.push(arr[i])
                    }else{
                        right.push(arr[i])
                    }
                }
                // 递归,并将left和中间值,以及right连接起来
                return mySort(left).concat(numValue,mySort(right))
            }
            // 定义数组
            let arr = [1,2,8,7,5,4,6,9,8]
            // 输出到页面显示
            document.write(mySort(arr))
    
    

    相关文章

      网友评论

          本文标题:封装一个快速排序方法

          本文链接:https://www.haomeiwen.com/subject/nmvolqtx.html