希尔排序:

function shellSort(arr) {let len = arr.length;let temp, gap = 1;while(gap < len/3) {gap = gap*3 +1}while(gap >=1) {for(let i = gap;i< len; i++) {temp = arr[i];for( var j= i-gap; j>= 0 && arr[j] > temp; j -= gap) {arr[j + gap] = arr[j];}arr[j + gap] = temp;}gap = (gap -1 ) /3;}return arr
}
let arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(shellSort(arr));


归并排序:

function mergeSort(arr){let len = arr.length;if(len < 2){return arr}let middle = Math.floor(len/2);let left = arr.slice(0, middle);let right = arr.slice(middle);return merge(mergeSort(left),mergeSort(right))
}
function merge(left, right) {let results = [];while(left.length && right.length) {if(left[0] < right[0]){results.push(left.shift());} else{results.push(right.shift());}}while(left.length) {results.push(left.shift());}while(right.length) {results.push(right.shift());}return results;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(mergeSort(arr));

快速排序:

function qSort(arr) {if(arr.length == 0) {return []}let left = [];let right = [];let pivot = arr[0];for(let i =1;i< arr.length;i++) {if(arr[i] < pivot) {left.push(arr[i]);} else{right.push(arr[i]);}}return qSort(left).concat(pivot, qSort(right));
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(qSort(arr));

参考:https://github.com/zoro-web/blog/issues/4

算法 --- 希尔排序、归并排序、快速排序的js实现相关推荐

  1. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  2. JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)

    JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...

  3. 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序

    这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...

  4. 算法---排序--希尔排序和快速排序

    冒泡.选择.插入排序算法是三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递 ...

  5. 十大经典排序算法-希尔排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  6. 经典排序算法 - 希尔排序Shell sort

    经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...

  7. 下列各排序法中,最坏情况下的时间复杂度最低的是(**C** )A.希尔排序 B.快速排序 C.堆排序 D.冒泡排序

    下列各排序法中,最坏情况下的时间复杂度最低的是(C ) 希尔排序 A.快速排序 B.堆排序 C.冒泡排序 D.正确答案:C 题目解析: 堆排序最坏情况时间下的时间复杂度为 O(nlog2n) :希尔排 ...

  8. 数据结构第16周 :( 希尔排序+ 堆排序 + 快速排序 )

    目录 希尔排序 堆排序 快速排序 希尔排序 [问题描述]给出一组数据,请用希尔排序将其按照从小到大的顺序排列好. [输入形式]原始数据,以0作为输入的结束:第二行是增量的值,都只有3个. [输出形式] ...

  9. python排序算法——希尔排序(附代码)

    python排序算法--希尔排序 文章目录 python排序算法--希尔排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法 ...

最新文章

  1. 分布式计算Hadoop系列之如何修改Eclipse插件
  2. Vue CLI:全局CLI配置
  3. Abbey加入了FreeCodeCamp团队,担任编辑
  4. jdk、jre及jvm的关系
  5. 第1次在Flash Builder中写程序
  6. 协议圣经 ARP RARP 六
  7. 【汇编语言】【ARM扩展资料】数据表示
  8. matlab中转置操作,如何转置MATLAB表?
  9. linux给用户设置环境变量,linux添加环境变量4种方法
  10. 大家谈之《区块链大革命》
  11. 【VulnHub靶场】——HARRYPOTTER第一部: ARAGOG (1.0.2)
  12. SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-003-四种方式获取DataSource...
  13. 没学历,当程序员还有机会吗?
  14. android如何基于父布局,如何根据父视图的尺寸调整Android视图的大小
  15. ios15.0.1正式版耗电吗 ios15.0.1正式版值得升级吗
  16. Revisiting Network Support for RDMA
  17. Linux上安装oracle19c客户端,Oracle 19c的下载和安装部署(图形安装和静默安装)
  18. 深圳注册公司可以异地办公吗
  19. Docker in Docker dind
  20. 已知道三个点求平面方程(这些玩意都忘了好久了~~)

热门文章

  1. matlab207a,MATLAB教程R2012a课后习题答案
  2. 网络连接异常、网站服务器失去响应_网站常见故障解决办法
  3. ios did receive memory warning
  4. linux 查看进程
  5. Cocoapods pod update执行失败报错CocoaPods was not able to update the `master` repo.2019的解决...
  6. shop--12.阿里云部署以及域名绑定
  7. ACM10.14题解
  8. zabbix 从入门到精通
  9. SWT中Button事件的几种不同写法
  10. 用PHP获取土豆网视频FLV地址