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

版本一:

    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));
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,728评论 25 709
  • 手机里单曲循环一直唱着:"暧昧让人受尽委屈",小凡撅着嘴眼泪就快要掉下来。最近她的巨轮基友像是特勤一般,神出鬼没,...
    瑶瑶帆帆阅读 485评论 0 0
  • 1.Mybatis映射文件的 标签主要帮助我们完成SQL语句查询功能, 标签它包含了很多属性,下面简单对 标签的属...
    吴国友阅读 756评论 0 0
  • 小径幽长玉兰香,春光初现迎春黄。 乍暖还寒牧星澈,匆匆学子添衣裳。 ――初春,百花争艳之初,只有玉兰和迎春迫不及待...
    舞化城阅读 670评论 0 3