美文网首页
用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));
}

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

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

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

    版本一: 使用方式: 这种方式会对原数组产生影响。 版本2: 引用自:http://www.ruanyifeng....

  • JS实现排序算法

    原文:常见排序算法之JavaScript实现 - 知乎 目录 冒泡排序 选择排序 插入排序 合并排序 快速排序 1...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

  • 排序算法

    快速排序:顾名思义就是快,c语言底层实现的排序算法主要就是用的快速排序。快速排序,最好时间复杂度是nlogn,最坏...

  • iOS常见算法

    升序算法:用冒泡排序法 选择排序法 快速排序

  • 基础算法|快速排序

    快速排序(Quicksort),是对冒泡排序算法的一种改进。 快速排序算法通过多次比较和交换来实现排序,其排序流程...

网友评论

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

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