快速排序

基本思想:

  1. 先选择基准(一般选择中间位置)
  2. 对数组剩下的元素进行遍历,小于基准的放在基准左边,大于基准的放在基准右边
  3. 对左边和右边的元素重复调用前两步,直到只剩下一个元素为止

特点:速度快

function quickSort(arr) {
  
  if (arr.length <= 1) {
    return arr;
  }
  
  var baseIndex = Math.floor(arr.length /2 );
  var base = arr.splice(baseIndex,1);
  
  var left = [];
  var right = [];
  
  for (var i = 0; i < arr.length; i ++) {
    if (arr[i] < base[0]) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(base, quickSort(right));
}


var arr = [3, 2, 5, 7, 1, 4, 8];

var res = quickSort(arr);

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

推荐阅读更多精彩内容

  • 数据结构与算法——快速排序 快速排序,顾名思义,它速度很快,针对一般应用中各种不同的输入都要比其他排序算法快很多,...
    sunhaiyu阅读 3,383评论 0 3
  • quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pi...
    黎景阳阅读 480评论 0 1
  • 注:本文是在看了两篇大牛的博客后,通过整理供自己学习快速排序所做笔记,分享出来方便大家学习。如需进一步了解可以查看...
    跑者小越阅读 577评论 0 4
  • 标签(空格分隔): 数据结构与算法 原理: 对于任意一个无序数组,我们随机的选一个元素作为基准元素(例如:数组中的...
    Sivin阅读 12,648评论 9 15
  • 第四天的课程的主题是弹性,在老师讲课过程中我心里就一直有个声音“怎样的计划安排才叫弹性?”实在不懂。随着课程的...
    柚子爱柠檬茶阅读 331评论 0 0