基于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 相关文章推荐
ajaxControlToolkit AutoCompleteExtender的用法
Oct 30 Javascript
基于jquery的仿百度搜索框效果代码
Apr 11 Javascript
编写针对IE的JS代码两种编写方法
Jan 30 Javascript
深入理解javascript中defer的作用
Dec 11 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
Jan 19 Javascript
JS HTML5拖拽上传图片预览
Jul 18 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
vue router2.0二级路由的简单使用
Jul 05 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
js实现简单选项卡制作
Aug 05 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
substr()函数中文版
2006/10/09 PHP
php实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
php实现快速排序法函数代码
2012/08/27 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
谈一谈bootstrap响应式布局
2016/05/23 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
分类解析jQuery选择器
2016/11/23 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
javascript实现文字无缝滚动效果
2017/08/26 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
浅谈python写入大量文件的问题
2018/11/09 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
香港化妆品经销商:我的公主
2016/08/05 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
2014年计算机专业个人自我评价
2014/01/19 职场文书
早读迟到检讨书
2014/01/24 职场文书
元旦红领巾广播稿
2014/02/19 职场文书
个人年底工作总结
2015/03/10 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript