将要排序的一组数按某个增量d分成若干组,每组中记录的下标相差d.对每组中全部元素进行排序,然后再用一个较小的增量对它进行分组,在每组中再进行排序。当增量减到1时,整个要排序的数被分成一组,排序完成。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><script>function shellSort(arr) {for (let gap = Math.floor(arr.length / 2); gap >= 1; Math.floor(gap /= 2))for (let i = gap; i < arr.length; i++)for (let j = i; j >= gap && arr[j - gap] > arr[j]; j -= gap) {let t = arr[j];arr[j] = arr[j - gap];arr[j - gap] = t;}return arr;}console.log(shellSort([5, 4, 8, 9, 7, 2, 3, 1, 6])); //[1,2,3,4,5,6,7,8,9]</script></body>
</html>

Javascript希尔排序相关推荐

  1. JavaScript实现ShellSort希尔排序算法(附完整源码)

    JavaScript实现ShellSort希尔排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 ShellSort.js完整源代码 Comparator.js完整 ...

  2. JavaScript Switc希尔排序

    算法详解: 希尔排序的基本思想: (1)选择一个希尔增量序列t1,t2,-,tk,(递减序列,tk=1) (2)按增量序列个数k,对序列进行k 趟排序, 每趟排序,根据对应的增量ti,将待排序列分割成 ...

  3. php取名字算法,JavaScript排序算法之希尔排序的2个实例_基础知识

    插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率. 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位. 希尔排序按其设计者希尔(Donald Shell)的 ...

  4. 算法系列【希尔排序】篇

    常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 关于时间复杂度: 1.     平方阶 (O(n2)) 排序各类简单排序:直接插入 ...

  5. javascript常用排序算法总结

    算法是程序的灵魂.虽然在前端的开发环境中排序算法不是很经常用到,但常见的排序算法还是应该要掌握的.我在这里从网上整理了一下常见排序算法的javascript实现,方便以后查阅. 归并排序: 1 fun ...

  6. JavaScript实现排序算法

    排序算法主要用在元素的数组排序,常见的排序算法有冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序等.这些排序算法都可以用JavaScript实现.下面的排序算法都假设是从小到大进行排序,从大 ...

  7. 算法笔记(JavaScript版)——排序

    算法笔记(JavaScript版)--排序 本文内容根据Rebert Sedgewick和Kevin Wayne的<算法(第四版)>整理,原代码为java语言,自己修改为JavaScrip ...

  8. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  9. 直接插入排序与希尔排序

    直接插入排序(Straight Insertion Sort):         一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的.记录数量增1的有序表. 原理图如 ...

最新文章

  1. 杭电3371Connect the Cities
  2. MD5加密以及验证加密-加盐
  3. linux 网络管理   防火墙 iptables
  4. Authentication vs. Authorization 验证与授权[整理]
  5. 静态页中调用动态数据的三种办法
  6. Vue 学习 之 7.01 学习笔记
  7. 2018.12.08 codeforces 946D. Timetable(背包)
  8. eclipse中ast_JavaParser中AST节点的观察者
  9. 查找发布地图的 REST URL并查询相关信息
  10. 【转载】URL中的文本IPv6地址的格式RFC2732
  11. TCP协议的部分解析(1)
  12. 差分进化算法python_差分进化算法DE-python实现
  13. Mac Homebrew命令报错/usr/local/Homebrew/Library/Homebrew/version.rb:368:in `initialize’
  14. 程序开发中常用的密码学家的算法推荐清单
  15. 万能html5视频播放器安卓,XPlayer万能视频播放器
  16. 工业机器人技术试题_工业机器人考试试题库
  17. android webview 获取cookie,Android WebView 之Cookie
  18. QTextEdit添加输入提示语
  19. 零基础Python学习(2) --- 《我想你猜》1.0版
  20. pure-ftpd 搭建 FTP 服务器

热门文章

  1. 大厂内部资料 | Redis 性能优化的 13 条军规!
  2. Python 大数据分析疫情:如何实现实时数据爬取及 Matplotlib 可视化?
  3. 漫画:大厂总体 SaaS 化部署,到底什么是 IaaS、PaaS 和 SaaS?
  4. Google Reader 干掉了 RSS!
  5. “遗留代码是传奇!”
  6. 春晚鬼畜 B 站日排行最高,赵本山:我的时代还没有结束!
  7. 燃爆了!胡歌秒变最帅产品经理发布荣耀V20!
  8. 移动开发者如何更好地学习 React Native? | 技术头条
  9. springboot入门书籍推荐,电商实战之优惠卷实现(1)
  10. 如何实现分布式锁?赶紧收藏备战金三银四!