美文网首页前端技术讨论
javaScript数据结构和算法--快速排序

javaScript数据结构和算法--快速排序

作者: 安然_她 | 来源:发表于2019-05-16 11:22 被阅读0次

快速排序时最常用的排序算法,和归并排序一样也是采用分治方法,但没有把数组分割开,也是将原数组分成较小的数组。

1、从数组的中间选择一项作为主元。

2、创建两个指针,left 指向数组的第一个元素,right指向数组的最后一个元素,移动left指针直到找到第一个比主元大的数,接着再移动right指针,找到比主元小的数,交换他们,重复这个过程,直到左右指针相遇。这个过程执行完主元左边都是比主元小的数,主元的右边都是比主元大的数。划分

3、接着对划分后的两个小数组重复之前的操作,直至数组已经全部排列

快速排序的代码实现:

function QuickSort() {

    const array = [];

    this.insert = function(item) {

        array.push(item);

    }

    this.toString = function() {

        return array.join();

    }

    this.quickSort = function() {

        quick(array, 0, array.length-1);

    }

    const quick = function(array, left, right) {

        let index = 0;

        if(array.length > 1) {

            index = partition(array, left, right);

            if(left < index-1) {

                quick(array, left, index-1);

            }

            if(index < right) {

                quick(array, index, right);

            }

        }

    }

    const partition = function(array, left, right) {

        var pivot = array[Math.floor((left + right) / 2)],

            i = left,

            j = right;

        while(i <= j) {

            while(array[i] < pivot) {

                i++

            }

            while(array[j] > pivot) {

                j--;

            }

            if(i <= j) {

                swapQuickSort(array, i, j);

                i++;

                j--;

            }

        }

        return i;

    }

    const swapQuickSort = function(array, index1, index2) {

        var aux = array[index1];

        array[index1] = array[index2];

        array[index2] = aux;

    }

}

var arr = new QuickSort();

arr.insert(3);

arr.insert(13);

arr.insert(32);

arr.insert(23);

arr.insert(11);

arr.insert(8);

arr.insert(33);

arr.insert(28);

console.log(arr.toString()); // 3,13,32,23,11,8,33,28

arr.quickSort();

console.log(arr.toString());

相关文章

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 排序算法6:快速排序

    数据结构与算法 快速排序为应用最多的排序算法,因为快速二字而闻名。快速排序和归并排序一样,采用的都是分治思想。 分...

  • javaScript数据结构和算法--快速排序

    快速排序时最常用的排序算法,和归并排序一样也是采用分治方法,但没有把数组分割开,也是将原数组分成较小的数组。 1、...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • 2019年5月份找工作面试知识点总结

    面试知识点 算法和数据结构 常用算法排序算法各种排序算法的时间复杂度,是否稳定内部排序快速排序 nlgn 不稳定冒...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 数据结构与算法——快速排序

    数据结构与算法——快速排序 快速排序,顾名思义,它速度很快,针对一般应用中各种不同的输入都要比其他排序算法快很多,...

  • JS实现排序算法

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

  • 音视频开发之旅(25) 算法系列-堆排序

    目录 基本数据结构 堆排序 资料 收获 前面我们学习实践了冒泡排序和快速排序,这篇我们继续学习另外一种排序算法:堆...

网友评论

    本文标题:javaScript数据结构和算法--快速排序

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