基于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中获取未知对象属性的代码
Apr 27 Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
JS面试题---关于算法台阶的问题
Jul 26 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
Aug 31 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
Dec 14 Javascript
Javascript(es2016) import和require用法和区别详解
Aug 11 Javascript
浅谈Postman解决token传参的问题
Mar 31 Javascript
JS实现图片旋转动画效果封装与使用示例
Jul 09 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 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伪静态的实现详细介绍
2013/04/28 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
JS中style属性
2006/10/11 Javascript
JS 控件事件小结
2012/10/31 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
网络传输协议(http协议)
2016/11/18 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python实现处理管道的方法
2015/06/04 Python
Python实现配置文件备份的方法
2015/07/30 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
Django读取Mysql数据并显示在前端的实例
2018/05/27 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
pandas dataframe 中的explode函数用法详解
2020/05/18 Python
Python devel安装失败问题解决方案
2020/06/09 Python
python 怎样进行内存管理
2020/11/10 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
纠纷协议书
2014/04/16 职场文书
企业法人代表证明书
2015/06/18 职场文书
团拜会主持词
2015/07/04 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
使用pytorch实现线性回归
2021/04/11 Python
python基础之文件处理知识总结
2021/05/23 Python