快速排序JS实现

作者: D6K | 来源:发表于2018-06-20 22:08 被阅读146次

快速排序原理

快速排序的基本思想是选取一个基准值将排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分都要小,然后对分割出来的这两部分分别再次进行类似的操作,整个排序过程递归进行到最基础的情形,然后进行合并操作,最终对所有数据完成排序。其核心就是递归划分。

JS实现

function quickSort(array){
    let tempArray = Array.from(array); // 为了不改变原始数组,所以复制一份,在复制的数组上操作
    let len = tempArray.length;
// 最基本情形,直接返回 
    if(len <= 1) {
        return tempArray;
    }
    let pivotIndex = Math.round(len / 2);  // 选取基准,这个可以随意取,一般取中间位置
    let piovt = tempArray.splice(pivotIndex, 1);  // 基准值
    let left = [], right = [], i;
 // 将除基准值之外的数据进行分割
// 注意: len需要减1,因为基准值单独拿出来了,即将它从要排序的数据中删除了
    for(i = 0, len -= 1; i < len; i++) {
        if(tempArray[i] < piovt) {
            left.push(tempArray[i]);  
        } else {
            right.push(tempArray[i]);
        } 
    }
       // 递归地进行分割,最后把它们跟基准值一起拼接成已排好序的 
    return quickSort(left).concat(piovt, quickSort(right));
}

// 测试排序
let test = [2, 5, 1, 8, 0, 3, 1, 0, 9, 23,2, 7];
let result = quickSort(test);

console.log(result);
console.log(test);

快排JS实现

相关文章

  • JS实现快速排序

    大致分三步: 1、找基准(一般是以中间项为基准) 2、遍历数组,小于基准的放在left,大于基准的放在right ...

  • JS实现快速排序

    看了一篇通俗易懂的快排文章 快排,下面一步一步 实现整个过程。 快排的基本思想 上面链接的文章对快排的思路提出了一...

  • 快速排序JS实现

    快速排序原理 快速排序的基本思想是选取一个基准值将排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分...

  • JS实现快速排序

    快速排序用到以下方法 Math.floor->返回小于或等于一个给定数字的最大整数 splice->向/从数组中添...

  • JS实现快速排序

  • JS 实现快速排序

    快速排序的思想 (1)在数据集之中,找一个基准点 (2)建立两个数组,分别存储左边和右边的数组 (3)利用递归进行...

  • JS实现快速排序算法

    快速排序 快速排序 由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割...

  • js数组快速排序实现

  • JS实现快速排序算法

    采用了分治的思想(1)在数据集之中,选择一个元素作为"基准"(pivot)。(2)所有小于"基准"的元素,都移到"...

  • 快速排序的JS实现

    From:阮一峰 快速排序(Quicksort)的Javascript实现[https://www.ruanyif...

网友评论

    本文标题:快速排序JS实现

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