基于JavaScript实现的快速排序算法分析


Posted in Javascript onApril 14, 2017

本文实例讲述了基于JavaScript实现的快速排序算法。分享给大家供大家参考,具体如下:

首先要介绍一下冒泡排序,冒泡排序的过程很简单,首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个关键字交换,然后比较第二个和第三个,直到最后一个比较完成。这是第一趟冒泡,其结果使得关键字最大的记录被安置到最后一个位置上了。然后对序列前n-1个元素进行第二次冒泡,将倒数第二个选出。以此类推直到所有被选出,冒泡结束

通过分析可以得出,冒泡排序的时间复杂度为O(n2)

快速排序是对冒泡排序的一种改进,它是处理大数据集最快的排序之一,通过递归的方式将数据依次分解为包含较小元素和较大元素的不同子序列,不断重复该过程直到所有数据都是有序的。这个算法首先要选择一个基准值,围绕基准值进行。

示例如下:

基于JavaScript实现的快速排序算法分析

算法思想如下:

选择一个基准元素,将列表分为两个子序列;

对列表重新排序,将所有小于基准元素的元素放前面,大的放后面;

分别对较小元素的子序列和较大元素的子序列重复上面两个步骤。

我们通过js实现代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>JavaScript快速排序</title>
</head>
<body>
<script type="text/javascript">
  function qSort(nums) {//快速排序
    if(nums.length==0){
      return [];
    }
    var lesser=[];
    var greater=[];
    var pivot=nums[0];//选择基准元素
    for(var i=1;i<nums.length;i++){
      if(nums[i]<pivot){//分成两个之序列
        lesser.push(nums[i]);
      }else{
        greater.push(nums[i]);
      }
    }
    return qSort(lesser).concat(pivot,qSort(greater));//递归
  }
  function show(nums){//显示数组
    for(var i=0;i<nums.length;i++){
      document.write(nums[i]+' ');
    }
    document.write('<br>');
  }
  var nums=[68,80,12,80,95,70,79,27,88,93];
  show(nums);//newNums
  var newNums=qSort(nums);//希尔排序
  show(newNums);//0 0 2 3 4 5 5 6 8 9
</script>
</body>
</html>

就平均时间而言,快速排序是目前被认为最好的一种内部排序方法。快速排序非常适用于大型数据集合,在处理小数据集时性能反而会下降。其时间复杂度为O(nlog2n)

基于JavaScript实现的快速排序算法分析

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript中&quot;/&quot;运算符常见错误
Oct 13 Javascript
常见表单重复提交问题整理及解决方法
Nov 13 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
Bootstrap表单布局样式源代码
Jul 04 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
聊一聊JS中的prototype
Sep 29 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
详解vue-cli3多页应用改造
Jun 04 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 Javascript
基于JavaScript实现十五拼图代码实例
Apr 26 Javascript
小程序富文本提取图片可放大缩小
May 26 Javascript
微信小程序中的swiper组件详解
Apr 14 #Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 #Javascript
基于JavaScript实现的希尔排序算法分析
Apr 14 #Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 #Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 #Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 #Javascript
基于JavaScript实现的插入排序算法分析
Apr 14 #Javascript
You might like
php中iconv函数使用方法
2008/05/24 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php读取excel文件的简单实例
2013/08/26 PHP
WordPress中&quot;无法将上传的文件移动至&quot;错误的解决方法
2015/07/01 PHP
用于table内容排序
2006/07/21 Javascript
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
原生js实现分页效果
2020/09/23 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
Python六大开源框架对比
2015/10/19 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
Python3.6正式版新特性预览
2016/12/15 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
浅谈python出错时traceback的解读
2020/07/15 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
儿媳婚宴答谢词
2014/01/14 职场文书
总会计师岗位职责
2014/02/19 职场文书
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
MySQL添加索引特点及优化问题
2022/07/23 MySQL