当前位置:首页 > 日记 > 正文

JS排序之快速排序详解

JS排序之快速排序详解

本文为大家分享了JS快速排序的具体代码,供大家参考,具体内容如下

说明

时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置

--JS快速排序--

原理

从数组中选定一个基数,然后把数组中的每一项与此基数做比较,小的放入一个新数组,大的放入另外一个新数组。然后再采用这样的方法操作新数组。直到所有子集只剩下一个元素,排序完成。

时间复杂度,空间复杂度,稳定性

  • 平均时间复杂度O(nlogn)
  • 最好情况O(nlogn)
  • 最差情况O(n*n)
  • 空间复杂度O(logn)
  • 稳定性:不稳定

快速排序的写法

var examplearr=[8,94,15,88,55,76,21,39];function fastsort(arr){  if(arr.length<2){    return arr;  }  var left=[];  var right=[];  var pivotIndex=Math.floor(arr.length/2);  var pivot=arr.splice(pivotIndex,1)[0];  for(i=0;i<arr.length;i++){    if(arr[i]<pivot){      left.push(arr[i]);    }else{      right.push(arr[i])    }  }  return fastsort(left).concat([pivot],fastsort(right));}console.log(fastsort(examplearr));

解析

pivotIndex是将数组的长度除2向下取整得到的一个数值,数组的长度是不断减半的,所以最后它的值为0

pivot是利用splice方法从数组里获取一个基数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

jQuery源码分析之init的详细介绍

jQuery源码分析之init的详细介绍

源码分析,详细介绍,电脑软件,jQuery,init,init 构造器由于这个函数直接和 jQuery() 的参数有关,先来说下能接受什么样的参数。源码中接受 3 个参数:init: function (selector, context, root) { ...} jQuery() ,空参数,这个会直接返回一个空的…

JS字符串false转boolean的方法 |

JS字符串false转boolean的方法 |

方法,推荐,字符串,电脑软件,JS,大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,那么字符串的"false"是不是false呢,答案是否定的,if("false") 来判断的话,是等于true的所以今天遇到…

怎么在excel中使用矩阵函数在excel

怎么在excel中使用矩阵函数在excel

函数,方法,教程,矩阵,电脑软件,  矩阵函数:定义域和值域都属于方阵的函数称为矩阵函数,它有多种定义方法。当用方阵幂级数的和函数来定义矩阵函数时,方阵函数f(a)=,其中自变量a和函数值f(a)都是n阶方阵,Ck是常系数。下面小编教你在excel中使用…

详谈Angular路由与Nodejs路由的区

详谈Angular路由与Nodejs路由的区

路由,区别,电脑软件,Angular,Nodejs,1、觉得angualr.js的路由是针对于单页面的路由,每次路由发生变化,只是页面的状态发生变化,页面本身没有发生跳转2、express的路由是针对多页面的,也就是说他做的页面,路由的切换是伴随着页面的切换3、所以建…

wps打开表格出错怎么处理

wps打开表格出错怎么处理

处理方法,方法,表格,怎么处理,电脑软件,  我们有时在打开wps表格的时候,会弹出打开错误的提示窗口,如果出现这样的问题,那么,我们应该如何解决呢?下面就让小编告诉你解决wps表格打开出错的方法,希望小编整理的学习资料对大家有用。解决wps表格…

powerpoint预设动画在哪个栏目

powerpoint预设动画在哪个栏目

方法,设置,动画,切换动画,栏目,  在制作幻灯片的时候,要怎么去设置页面切换动画呢?其实方法很简单,但是新手不会,怎么办?有简单易懂的方法吗?下面给大家分享ppt怎么设置页面切换动画的方法啦,希望小编整理的资料对大家有帮助。ppt设置页面切…

怎么用Word2017统计字数word2017怎

怎么用Word2017统计字数word2017怎

统计,步骤,字数,电脑软件,strong,  使用Word2017自己打了一篇文档以后,自己想要查看一下自己打了多少文字,怎么快速的查看文字个数呢,使用过Word低版本的朋友有些朋友知道怎么查看字数,但是版本升级以后,查看的方法有些区别,但是还是不影响到小…

如何设置word2013自动生成目录

如何设置word2013自动生成目录

自动生成,如何设置,目录,电脑软件,  word2013中的目录用起来比word2010的更顺手,也更舒服。word2013插入目录用起来也不难,却能让整个文档阅读起来更方便,那么下面就由小编给大家分享下让word2013自动生成目录的技巧,希望能帮助到您。自动生…

JavaScript原生节点操作小结

JavaScript原生节点操作小结

节点操作,原生,电脑软件,JavaScript,前言:原生是Javascript的基础,还是需要多多重视,时间长都忘记了,现在整理一下。获取子节点children 不是标准的dom属性,但是几乎被所有浏览器支持。不包含文本节点.注意:在IE中,children包含注释节点。childNod…

excel表格间隔求和的方法excel表格

excel表格间隔求和的方法excel表格

方法,间隔,表格,电脑软件,excel,  Excel中的表格具体该如何间隔求和呢?下面是由小编分享的excel表格间隔求和的方法,以供大家阅读和学习。excel表格间隔求和的方法表格间隔求和步骤1:我们看到图中的颜色标记,我们是隔行求和,每隔一行求和一次…

jQuery动画_动力节点节点Java学院

jQuery动画_动力节点节点Java学院

节点,动画,学院,动力,电脑软件,用JavaScript实现动画,原理非常简单:我们只需要以固定的时间间隔(例如,0.1秒),每次把DOM元素的CSS样式修改一点(例如,高宽各增加10%),看起来就像动画了。但是要用JavaScript手动实现动画效果,需要编写非常复杂的代码。如…

前端框架学习总结之Angular、React

前端框架学习总结之Angular、React

学习,前端框架,详解,电脑软件,React,近几年前端的技术发展很快,细分下来,主要可以分成四个方面: 1.开发语言技术,主要是ES6&7,coffeescript,typescript等; 2.开发框架,如Angular,React,Vue.js,Angular2等; 3.开发工具的丰富和前端工…