美文网首页
用js实现排序算法之:快速排序

用js实现排序算法之:快速排序

作者: txwslyf | 来源:发表于2017-08-23 16:24 被阅读0次

    版本一:

        function quickSort(arr, right, left) {
            var temp, i = right, j = left;
            if (i >= j) {
                return
            }
            while (i < j) {
                while (arr[i] <= arr[j] && i < j) {
                    j--
                }
                if (i < j) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    i++;
                }
                while (arr[i] <= arr[j] && i < j) {
                    i++
                }
                if (i < j) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    j--;
                }
            }
            quickSort(arr, right, i - 1);
            quickSort(arr, i + 1, left);
        }
    

    使用方式:

     var arr = [4, 51, 2, 2, 1, 32, 1, 1, 2, 21, 1,2,3,1,2,111,2,2];
     quickSort(arr, 0, arr.length - 1);
     console.log(arr);
    

    这种方式会对原数组产生影响。


    版本2:

    引用自:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html

    function quickSort(arr) {
        if (arr.length <= 1) {
            return arr;
        }
        var pivotIndex = Math.floor(arr.length / 2);
    
        //需要将基数项删除
        var pivot = arr.splice(pivotIndex, 1)[0];
    
        var left = [];
        var right = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < pivot) {
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
            }
        }
        return quickSort(left).concat([pivot], quickSort(right));
    }
    

    这种方法理解起来比较简单,但是空间消耗比较严重。

    相关文章

      网友评论

          本文标题:用js实现排序算法之:快速排序

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