算法 --- 希尔排序、归并排序、快速排序的js实现
希尔排序:
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实现相关推荐
- C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】
目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...
- JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序)
JS 排序算法详解(冒泡排序,选择排序,插入排序,希尔排序,快速排序) 一. 大O表示法 在进行排序算法之前,我们得先掌握一种对算法效率的表示方法,大O表示法. 我们使用大O表示法来表示算法的时间复杂 ...
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
这篇文章主要介绍了Java如何实现八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序,需要的朋友可以参考下 本文实现了八个常用的排序算法:插入排序 ...
- 算法---排序--希尔排序和快速排序
冒泡.选择.插入排序算法是三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大,那么这三种简单的排序所需要的时间则是我们所不能接受的.接着我们在讲解递 ...
- 十大经典排序算法-希尔排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- 经典排序算法 - 希尔排序Shell sort
经典排序算法 - 希尔排序Shell sort 希尔排序Shell Sort是基于插入排序的一种改进,同样分成两部分, 第一部分,希尔排序介绍 第二部分,如何选取关键字,选取关键字是希尔排序的关键 第 ...
- 下列各排序法中,最坏情况下的时间复杂度最低的是(**C** )A.希尔排序 B.快速排序 C.堆排序 D.冒泡排序
下列各排序法中,最坏情况下的时间复杂度最低的是(C ) 希尔排序 A.快速排序 B.堆排序 C.冒泡排序 D.正确答案:C 题目解析: 堆排序最坏情况时间下的时间复杂度为 O(nlog2n) :希尔排 ...
- 数据结构第16周 :( 希尔排序+ 堆排序 + 快速排序 )
目录 希尔排序 堆排序 快速排序 希尔排序 [问题描述]给出一组数据,请用希尔排序将其按照从小到大的顺序排列好. [输入形式]原始数据,以0作为输入的结束:第二行是增量的值,都只有3个. [输出形式] ...
- python排序算法——希尔排序(附代码)
python排序算法--希尔排序 文章目录 python排序算法--希尔排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序算法 ...
最新文章
- 分布式计算Hadoop系列之如何修改Eclipse插件
- Vue CLI:全局CLI配置
- Abbey加入了FreeCodeCamp团队,担任编辑
- jdk、jre及jvm的关系
- 第1次在Flash Builder中写程序
- 协议圣经 ARP RARP 六
- 【汇编语言】【ARM扩展资料】数据表示
- matlab中转置操作,如何转置MATLAB表?
- linux给用户设置环境变量,linux添加环境变量4种方法
- 大家谈之《区块链大革命》
- 【VulnHub靶场】——HARRYPOTTER第一部: ARAGOG (1.0.2)
- SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-003-四种方式获取DataSource...
- 没学历,当程序员还有机会吗?
- android如何基于父布局,如何根据父视图的尺寸调整Android视图的大小
- ios15.0.1正式版耗电吗 ios15.0.1正式版值得升级吗
- Revisiting Network Support for RDMA
- Linux上安装oracle19c客户端,Oracle 19c的下载和安装部署(图形安装和静默安装)
- 深圳注册公司可以异地办公吗
- Docker in Docker dind
- 已知道三个点求平面方程(这些玩意都忘了好久了~~)
热门文章
- matlab207a,MATLAB教程R2012a课后习题答案
- 网络连接异常、网站服务器失去响应_网站常见故障解决办法
- ios did receive memory warning
- linux 查看进程
- Cocoapods pod update执行失败报错CocoaPods was not able to update the `master` repo.2019的解决...
- shop--12.阿里云部署以及域名绑定
- ACM10.14题解
- zabbix 从入门到精通
- SWT中Button事件的几种不同写法
- 用PHP获取土豆网视频FLV地址