1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>希尔排序</title>
  6. <!--<link rel="stylesheet" type="text/css" href="../style/fdt.css" />-->
  7. <script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script>
  8. <script type="text/javascript" src="../js/jquery.easydrag.handler.beta2.js"></script>
  9. <script type="text/javascript">
  10.  
  11. $(document).ready(
  12. function() {
  13.  
  14. var array_1 = [9,8,7,6,5,4,3,2,1];
  15. alert(array_1);
  16. /*shellSort*/
  17. alert(shellSort(array_1));
  18.  
  19. }
  20. );
  21.  
  22. </script>
  23.  
  24. <style type="text/css">
  25.  
  26. * { padding:0; margin:0; }
  27.  
  28. body {
  29. padding: 100px;
  30. font-size: 15px;
  31. }
  32.  
  33. </style>
  34.  
  35. <script type="text/javascript">
  36. function shellSort(array){
  37. var stepArr = [1031612713, 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 1750, 836, 701, 301, 132, 57, 23, 10, 4, 1]; // reverse() 在维基上看到这个最优的步长 较小数组
  38. var i = 0;
  39. var stepArrLength = stepArr.length;
  40. var len = array.length;
  41. var len2 = parseInt(len/2);
  42.  
  43. for(;i < stepArrLength; i++){
  44. if(stepArr[i] > len2){
  45. continue;
  46. }
  47. stepSort(stepArr[i]);
  48. }
  49. // 排序一个步长
  50. function stepSort(step){
  51.  
  52. //console.log(step) 使用的步长统计
  53.  
  54. var i = 0, j = 0, f, tem, key;
  55.  
  56. for(;i < step; i++){// 依次循环列
  57. for(j=1; step * j + i < len; j++){//依次循环每列的每行
  58. tem = f = step * j + i;
  59. key = array[f];
  60. while((tem-=step) >= 0){// 依次向上查找 <-
  61. // <----
  62. // <-------
  63.  
  64. if(array[tem] > key){
  65. array[tem+step] = array[tem];
  66. }else{
  67. break;
  68. }
  69. }
  70. array[tem + step ] = key;
  71. }
  72. }
  73.  
  74. }
  75.  
  76. return array;
  77.  
  78. }
  79.  
  80. </script>
  81.  
  82. </head>
  83.  
  84. <body>
  85. <div>希尔排序</div>
  86. </body>
  87. </html>

JavaScript排序算法——希尔排序的更多相关文章

  1. 排序算法--希尔排序(Shell Sort)_C#程序实现

    排序算法--希尔排序(Shell Sort)_C#程序实现 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难 ...

  2. 数据结构和算法(Golang实现)(22)排序算法-希尔排序

    希尔排序 1959 年一个叫Donald L. Shell (March 1, 1924 – November 2, 2015)的美国人在Communications of the ACM 国际计算机 ...

  3. 使用 js 实现十大排序算法: 希尔排序

    使用 js 实现十大排序算法: 希尔排序 希尔排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  4. C数据结构排序算法——希尔排序法用法总结(转http://www.cnblogs.com/skywang12345/p/3597597.html)

    希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进.该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 希尔排序实质上是一种分组插入方法.它 ...

  5. Python排序算法——希尔排序(Shell’s Sort)

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10793487.html 一.希尔排序(Shel ...

  6. js 实现排序算法 -- 希尔排序(Shell Sort)

    原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩 ...

  7. 排序算法-希尔排序(Java)

    package com.rao.sort; import java.util.Arrays; /** * @author Srao * @className ShellSort * @date 201 ...

  8. Java排序算法——希尔排序

    package sort; //================================================= // File Name : ShellSort //------- ...

  9. 数据结构和算法(Golang实现)(20)排序算法-选择排序

    选择排序 选择排序,一般我们指的是简单选择排序,也可以叫直接选择排序,它不像冒泡排序一样相邻地交换元素,而是通过选择最小的元素,每轮迭代只需交换一次.虽然交换次数比冒泡少很多,但效率和冒泡排序一样的糟 ...

随机推荐

  1. 最短的可通过编译的C语言程序

    要求:写一个最短的,能通过编译的C语言程序,但不要求能正确运行. 一般人首先想到的是除0.即 int main() { /; } 除0会引发SIGFPE信号(浮点异常). 我们也可以删掉return, ...

  2. colpick-jQuery颜色选择器使用说明

      一.demo及下载网址:http://www.htmleaf.com/jQuery/Color-Picker/20141108417.html   二.使用效果   三.使用方法 1.引入js和c ...

  3. 【BZOJ 2809】【APIO 2012】dispatching

    昨天晚上zyf神犇问我的题,虽然我太弱参加不了APIO但也做一做吧. 用小数据拍了无数次总是查不出错来,交上去就WA,后来用国内数据测发现是主席树上区间相减的值没有用long long存,小数据真是没 ...

  4. hadoop,mapreduce---分布式计算

    从图中可以看出,map阶段的shuffle: 例如word count,当内存缓冲区满的时候会写到磁盘,一个spill,每个spill,进行分区,排序,最后将同一个分区word合并在一起,写入到磁盘中 ...

  5. 素数筛 poj 2689

    素数筛 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; ...

  6. 堆 poj 2010

    选n个人从c个中 花费不超过f c个人的成绩和花费 求分数中位数最大 n是奇数 显然中位数是n/2+1 ~c-n/2之间的(假如存在的话) 用大顶堆维护前n/2个小的花费 求出以这个人为中位数的花费 ...

  7. poj3294 出现次数大于n/2 的公共子串

    Life Forms Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 13063   Accepted: 3670 Descr ...

  8. hibernate DetachedCriteria实现多表关联查询createAlias的使用

    记录本例查询初衷: 有表: 表1,表2,表3 关系 1 many-to-one 2 2 many-to-one 3 结果:要通过表3中的条件反向查询表1中相关的数据 public Page<We ...

  9. 54. Android中adb常用命令及应用常用目录

    本文主要介绍adb常用命令及应用常用目录.1.adb常用命令adb devices列出所有连接的android设备.以下命令都是对单个devices而言,如果存在多个devices的话,下面的命令都需 ...

  10. 洛谷P2242 公路维修问题(Road)

    题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛棚里有牛 ...