javascript快速排序算法详解

 更新时间:2014年09月17日 11:42:51   投稿:hebedich  
JavaScript实现的常见排序算法有:冒泡排序,选择排序,插入排序,谢尔排序,快速排序(递归),快速排序(堆栈),归并排序,堆排序。今天我们来详细分析下快速排序算法
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

"快速排序"的思想很简单,整个排序过程只需要三步:

  (1)在数据集之中,找一个基准点

  (2)建立两个数组,分别存储左边和右边的数组

  (3)利用递归进行下次比较

看一个demo:http://jsdo.it/norahiko/oxIy/fullscreen(网页打开可能较慢,慢慢等待吧)

<script type="text/javascript"> 

function quickSort(arr){
  if(arr.length<=1){
    return arr;//如果数组只有一个数,就直接返回;
  }

  var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整
  var numValue = arr.splice(num,1);//找到中间数的值
  var left = [];
  var right = [];

  for(var i=0;i<arr.length;i++){
    if(arr[i]<numValue){
      left.push(arr[i]);//基准点的左边的数传到左边数组
    }
    else{
      right.push(arr[i]);//基准点的右边的数传到右边数组
    }
  }
 return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”

</script>

相关文章

  • javascript实现根据汉字获取简拼

    javascript实现根据汉字获取简拼

    这里给大家分享一个JavaScript实现的根据汉字可以自动转换简拼代码,有需要的朋友可以参考一下,并非本人原创来自网络。
    2016-09-09
  • JS实现两表格里数据来回转移的方法

    JS实现两表格里数据来回转移的方法

    这篇文章主要介绍了JS实现两表格里数据来回转移的方法,涉及javascript鼠标事件及页面元素的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • 谈谈JavaScript的New关键字

    谈谈JavaScript的New关键字

    这篇文章主要和大家聊一聊JavaScript的New关键字,一般我们通过New关键字来创建一个类的实例对象,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • JavaScript实现精美个性导航栏筋斗云效果

    JavaScript实现精美个性导航栏筋斗云效果

    这篇文章主要介绍了JavaScript实现精美个性导航栏筋斗云效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-10-10
  • axios实现简单文件上传功能

    axios实现简单文件上传功能

    这篇文章主要为大家详细介绍了axios实现简单文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • JS算法题解旋转数组方法示例

    JS算法题解旋转数组方法示例

    这篇文章主要为大家介绍了JS算法题解旋转数组方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • TypeScript?使用?Tuple?Union?声明函数重载

    TypeScript?使用?Tuple?Union?声明函数重载

    这篇文章主要介绍了TypeScript?使用?Tuple?Union?声明函数重载,TypeScript 中为函数添加多个签名后,依然需要添加相应的代码来判断并从不同的签名参数列表中获取对应的参数,下文就来探索方法和技巧吧
    2022-04-04
  • JS删除对象中某一属性案例详解

    JS删除对象中某一属性案例详解

    这篇文章主要介绍了JS删除对象中某一属性案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Javascript Symbol原理及使用方法解析

    Javascript Symbol原理及使用方法解析

    这篇文章主要介绍了Javascript Symbol原理及使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 了解在JavaScript中将值转换为字符串的5种方法

    了解在JavaScript中将值转换为字符串的5种方法

    这篇文章主要介绍了在JavaScript中将值转换为字符串的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编就和大家一起来学习下吧
    2019-06-06

最新评论

?


http://www.vxiaotou.com