js实现快速排序算法的2种方式使用帮助_算法入门知识

第一种:通过两个for循环每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,这个方法就是比较次数太多了,效率比较低。我只是传入了一个10位数的数组,如果是上万或者更大的数据,不知道您的电脑会不会蓝屏了,嘿嘿,你可以试试哦!var Sort=function(arr){ for(var i=0;i<arr.length-

js实现快速排序算法的2种方式使用帮助

第一种:通过两个for循环

每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置,这个方法就是比较次数太多了,效率比较低。我只是传入了一个10位数的数组,如果是上万或者更大的数据,不知道您的电脑会不会蓝屏了,嘿嘿,你可以试试哦!

js实现快速排序算法的2种方式使用帮助_算法入门知识

var Sort=function(arr){ 
    for(var i=0;i<arr.length-1;i++){ 
        for(var j=i+1;j<arr.length;j++){ 
            if(arr[i]>arr[j]){/*如果前面的数据比后面的大就交换位置*/
                var list=arr[i]; 
                arr[i]=arr[j]; 
                arr[j]=list; 
            }  
        } 
    }  
    return arr; 
} 
Sort([10,10,1,2,4,6,7,89,7,4]) //输出结果

第二种方法

这方法是我浏览阮一峰老师日志看到的,这种方法的效率会高很多,具体选哪种,看情况吧!

var quickSort = function(arr) {
  if (arr.length <= 1) {//如果数组长度小于等于1无需判断直接返回即可 
        return arr;
    }
  var pivotIndex = Math.floor(arr.length / 2);//取基准点 
  var pivot = arr.splice(pivotIndex, 1)[0];//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数
  var left = [];//存放比基准点小的数组
  var right = [];//存放比基准点大的数组 
  for (var i = 0; i < arr.length; i++){ //遍历数组,进行判断分配 
    if (arr[i] < pivot) {
      left.push(arr[i]);//比基准点小的放在左边数组 
    } else {
      right.push(arr[i]);//比基准点大的放在右边数组 
    }
  }
    //递归执行以上操作,对左右两个数组进行操作,直到数组长度为<=1; 
  return quickSort(left).concat([pivot], quickSort(right));
};//使用的时候,直接调用quickSort()就行了。
海计划公众号
(0)
上一篇 2020/03/30 16:08
下一篇 2020/03/30 16:08

您可能感兴趣的内容

  • js实现进度条代码小白指南_代码入门指南

    现在很多网站会用到进入网站特效,到网页没有加载完成的时候,会有一个loding特效,加载完了之后才能看到页面,今天就带着做一个js进度条效果,今天要做的效果是纯js进度条加载,没有用到框架,方便大家进行深入理解:首先我们要进行js进度条的布局js进度条布局如下:
    #progre

    2020/03/23
  • 页面刷新时,如何保持原有vuex中的state信息基础知识入门_刷新小白知识

    一、页面刷新时,如何保持原有vuex中的state信息页面刷新后,原有的 vuex 中的 state 会发生改变,如果在页面刷新之前,可以将 state 信息保存,页面重新加载时,再将该值赋给 state,那么该问题即可解决。1、localstorage可以使用 localstorage 来保存信息。【在某组件中添加如下钩子函数。比如 App.vue中】
    c

    2020/03/23
  • Js详细判断浏览器运行环境攻略教程_浏览器使用指南

    前言看到标题,大家就能想起这个需求在很多项目上都能用到。我们部署在Web服务器上的前端应用,既可以用PC浏览器访问,也可以用手机浏览器访问,再加上现在智能设备的推广,我们甚至能在车载系统、穿戴设备和电视平台上访问。设备的多样化让用户无处不在,有时候我们需要根据不同的浏览器运行环境做出对应的处理。浏览器是JavaScript的承载体,我们可以从浏览器上获取相关

    2020/03/24
  • 前端之CSS编码规范菜鸟知识_规范菜鸟攻略

    前端之CSS编码规范菜鸟知识 前言 项目启动时 css 应该注意哪些问题 文件名规范 文件名建议用小写字母加中横线的方式。为什么呢?因为这样可读性比较强,看起来比较清爽,像链接也是…

    2020/03/19
  • JS实现zip打包文件并下载入门基础教程_下载菜鸟知识

    一、事情的起因之前做了个SVG Sprites还原工具(上传合并好的SVG Sprites文件,分解成独立的小SVG),然后经用户反馈,希望增加个打包下载功能。然后就可以下载了,下面是找到的下载记录。二、如何实现ZIP打包下载使用jszip这个项目实现的: https://github.com/Stuk/jszip压缩和未压缩的JS文件都在 dist目录 下

    2020/03/26
  • 直播APP开发对界面设计的要求小白攻略_直播小白指南

    移动互联网时代,各种APP已经离不开我们的生活,制作开发一款受大众欢迎的APP也成了重点,特别是在直播APP开发过程中,是一款界面花哨,还是相对简单的APP更适合直播呢?直播APP的每一个图标,每个界面都是要严格把控。直播APP界面设计,怎么做才能让直播APP的界面效果更好,需要UI和UE的精心设计,界面富有创意,有个性才能让用户的体验更好,好的界面设计用户

    2020/03/20
  • PDFYeah教程视频_在线多合一PDF转换器

    PDFYeah教程视频 官方网址:https://www.pdfyeah.com/ 简介描述:在线多合一PDF转换器 PDFYeah是一款免费的线上PDF转换器,可以满足你的日常或…

    2020/03/10
  • 酷壳入门百科_享受编程和技术所带来的快乐

    酷壳入门百科 官方网址:https://coolshell.cn/ 简介描述:享受编程和技术所带来的快乐 是一个完全依靠个人建立的技术性BLOG。是一个分享技术见闻,知识,趋势的网…

    2020/03/06
  • 使用ES6让你的React代码提升到一个新档次菜鸟教程网_es6小白帮助

    ES6使您的代码更具表现力和可读性。而且它与React完美配合!现在您已了解更多基础知识:现在是时候将你的ES6技能提升到一个新的水平! 嵌套props解构您已经知道可以通过解构从React组件中的props中提取变量const { user } = this.props;
    但是如果user是一个对象并且你想从this.props.user.id提取到变量_

    2020/04/05
  • 什么是后缀表达式?入门指南_表达式入门基础

    后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则)。后缀表达式计算:后缀表达式计算与前缀表达式类似,只是顺序是从左至右,具体过程如下:从左至右扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素 op 栈顶

    2020/03/30
  • jStorage攻略教程_ 一个简单的键/值数据库,用于在浏览器端存储数据

    jStorage攻略教程 GitHub:https://github.com/andris9/jStorage 简介描述: 一个简单的键/值数据库,用于在浏览器端存储数据 jSto…

    2020/03/11
  • PHP的self关键字基础知识_关键字基础知识教程

    PHP群里有人询问 self 关键字的用法,答案是比较明显的:静态成员函数内不能用 this 调用非成员函数,但可以用 self 调用静态成员函数/变量/常量;其他成员函数可以用 self 调用静态成员函数以及非静态成员函数。随着讨论的深入,发现 self 并没有那么简单。鉴于此,本文先对几个关键字做对比和区分,再总结 self 的用法。与 parent 、

    2020/03/29
  • angularjs如何获取url参数?小白知识_url零基础入门

    angularjs如何获取url参数?小白知识 Angular中通过$location获取URL参数。$location服务负责解析浏览器地址栏中的URL(基于window.loc…

    2020/03/19
  • html元素隐藏的实现方案小白攻略_元素菜鸟指南

    老生常谈之display: none相信小伙伴们都被问过这样一个问题:让一个元素隐藏起来,有多少种方法呢?常规来讲,我们有三种方法display: none、opacity: 0和visibility: hidden ,基于display: none的副作用,已经是个被说烂的问题,主要是有以下缺点:一、切换显隐时会导致reflow(回流),从而引起repai

    2020/03/26
  • js中setTimeout和setInterval的深入理解:它们之间的区别,原理,“异步“等小白常识_定时器基础入门

    setTimeout和setInterval的区别setTimeout在执行时,是在载入后延迟指定时间后,去执行一次表达式,而setInterval则不一样,它从载入后是每隔指定的时间就执行一次表达式。当然我们可以通过重复调用setTimeout的方法,实现类似于setInterval一样达到周而复始的效果,下面我们就实现用setTimeout来模拟setI

    2020/04/06
  • React中常被问到的面试题教程视频_面试入门教程

    什么是 JSX要了解 JSX,首先先了解什么三个主要问题,什么事 VDOM,差异更新和 JSX 建模:VDOM,也叫虚拟 DOM,它是仅存于内存中的 DOM,因为还未展示到页面中,所以称为 VDOMvar vdom = document.createElement(“div”);上面这一句就是最简单的虚拟 DOMvar vdom = document.cre

    2020/03/24