首页 > 代码库 > JavaScript 快速排序

JavaScript 快速排序

    <script>
        var stu = [9,8,5,4,6,2,3,1,7,10];                        //创建数组
        console.log(stu);                                        //打印

        function stort(stu){                                    //定义函数传入数组
            if(stu.length>1)                                    //判断数组的长度大于1才执行循环
            {
                var c = parseInt((stu.length+1)/2);             //数组长度加1除以二
                var center = stu.splice(c,1)[0];                //找到数组中间位置的值
                var left=[],right=[];                            //定义左右空数组
                for(var i=0;i<stu.length;i++)                    //开始循环遍历
                {
                    if(stu[i]<center) { left.push(stu[i]); }    //如果小于数组中间位置的值就放入left数组中

                    else { right.push(stu[i]); }                //负责大于数组中间位置的值就放入right数组中
                }
                return stort(left).concat(center,stort(right))  //返回重新排序left数组在连接中间位置的值和right数组
            
            }else{
                return stu;                                        //否则返回stu数组
            }

        }

        stu = stort(stu);                                        //重新排序并保存,因为concat方法不会改变原数组
        console.log(stu);                                        //控制台打印输出

    </script>

技术分享

 

技术分享

1.在数组中选择中数组长度+1 /2 然后下取整获得中间的元素作为基准

2.对数组进行遍历,小于中间的元素都移到左边的数组,大于中间的元素都移到右边的数组

3.对中间 左边和右边的两个子集,不断重复前两步,直到所有子集只剩下一个元素为止

4.然后用concat方法连接左右数组和中间的值

 

JavaScript 快速排序