javascript 快速排序

首先上图 说明原理

下面是代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>

    <script type="text/javascript">

        /*
            1:找一个基数点
            2:建立两个数分别存储左别和右边的数
            3:用递归进行下次比较
        */

        function quickSort(arr) {

            if (arr.length <= 1)
                return arr;

            //找到中间坐标数
            var num = Math.floor(arr.length / 2);
            //找到值
            var numvalue = arr.splice(num, 1);

            //左右两个基数点
            var left = [];
            var right = [];

            for (var i = 0; i < arr.length; i++) {
                if (arr[i] < numvalue)
                    left.push(arr[i])
                else
                    right.push(arr[i]);
            }
           
            //递归调用 concat() 方法用于连接两个或多个数组。
            return quickSort(left).concat([numvalue],quickSort(right));
        }

       alert(quickSort([12,5,6,22,40]));

    </script>
</head>
<body>

</body>
</html>

 

posted @ 2015-04-27 22:26  KyrieYang  阅读(200)  评论(0编辑  收藏  举报