快速排序JS实现

快速排序原理

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

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

推荐阅读更多精彩内容

  • 注:本文是在看了两篇大牛的博客后,通过整理供自己学习快速排序所做笔记,分享出来方便大家学习。如需进一步了解可以查看...
    跑者小越阅读 572评论 0 4
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,747评论 0 15
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52
  • 云茵漫漫,恰逢几许蹉跎; 蝉语轻轻,方知夏岁淡然; 夜聒风清,孰懂思乡心切; 恋一城未许, 念北燕南飞, 忆旧城荏苒。
    楚明靖翊阅读 118评论 0 0
  • 从我自己开始学习编程到现在经过八年多的时间,很多人问过我,或者经常听到别人讨论这个话题,结合现在认知,我简单谈...
    悠悠君子阅读 227评论 0 0