关闭

js实现快速排序算法的2种方式

时间: 2019-04-18阅读: 1510标签: 算法

第一种:通过两个for循环

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

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()就行了。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/2921

关闭

Vue2.x的diff算法记录

为什么在Vue3.0都已经出来这么久了我还要写这篇文章,因为目前自己还在阅读Vue2.x的源码,感觉有所悟。作为一个刚毕业的新人,对Vue框架的整体设计和架构突然有了一点认知,所以才没头没尾地突然写下了diff算法。

js中常用的基础算法

今天给大家分享一下js中常用的基础算法,废话不多说,直接上代码;两个数字调换顺序;对象排序,安装对象中的id排序对象的位置;冒泡排序 ;随机出现不同的数字;字符串大小写互换

JS常见简单算法排序

我们面试中经常会遇到排序算法问题,我整理了冒泡排序、选择排序、插入插排等常见简单排序方法。希望此文想对了解排序的前端同学有所帮助。为了简单高效演示算法的实现思路,我先封装一个构造函数

js数组的常用算法解析

不改变原数组,返回新数组(字符串);改变原数组;遍历方法;ES6语法Map键值对转化为数组;两个升序的数组合并成一个升序数组;数组重复问题;两个数组的交集;找出一个数组中只出现一次的数字

js多叉树结构的数据,parent表示法转成children表示法

要求是将这个数组转成一个children表示法的对象,即从根节点开始,每个节点存有其子节点数组。转化效果如下(节点必须有个唯一标识符,以下id就是,并且转化前后其他属性保持不变,这里为了显示简洁没有加入其他属性。

JavaScript 实现归并排序

在本文中,我们学习 Merge Sort 背后的逻辑,并用 JavaScript 实现。最后,在空间和时间复杂度方面将归并排序与其他算法进行比较。

Js实现kmp算法_字符串查找算法

KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息

算法工程师的危机

AI概念在2015年起就红得发紫,不论是送外卖,搞团购,卖车,或是推荐莆田医院的,是个公司都会标榜自己是搞人工智能的。在21世纪的第二个十年,计算机专业相关的学生不说自己是搞AI算法的,同学聚会都抬不起头,相亲机会都变少了

js算法_奇偶分割数组

分割一个整数数组,使得奇数在前偶数在后。 比如:给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。思路分析:排序好的数组:找到奇数进行操作。乱序的数组:使用sort方法进行排序+提取奇数

前端Js排序算法:冒泡排序、 选择排序、快速排序

典型的排序方法,命名来自鱼呼吸时吹出的气泡,上层的气泡总是最大的。选择排序:顾名思义,每次都选择最小的,然后交换位置,快速排序思路:二分法,先找一个基数

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!