JavaScript排序算法——希尔排序
2016-02-03 12:20
731 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>希尔排序</title> <!--<link rel="stylesheet" type="text/css" href="../style/fdt.css" />--> <script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="../js/jquery.easydrag.handler.beta2.js"></script> <script type="text/javascript"> $(document).ready( function() { var array_1 = [9,8,7,6,5,4,3,2,1]; alert(array_1); /*shellSort*/ alert(shellSort(array_1)); } ); </script> <style type="text/css"> * { padding:0; margin:0; } body { padding: 100px; font-size: 15px; } </style> <script type="text/javascript"> function shellSort(array){ var stepArr = [1031612713, 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 1750, 836, 701, 301, 132, 57, 23, 10, 4, 1]; // reverse() 在维基上看到这个最优的步长 较小数组 var i = 0; var stepArrLength = stepArr.length; var len = array.length; var len2 = parseInt(len/2); for(;i < stepArrLength; i++){ if(stepArr[i] > len2){ continue; } stepSort(stepArr[i]); } // 排序一个步长 function stepSort(step){ //console.log(step) 使用的步长统计 var i = 0, j = 0, f, tem, key; for(;i < step; i++){// 依次循环列 for(j=1; step * j + i < len; j++){//依次循环每列的每行 tem = f = step * j + i; key = array[f]; while((tem-=step) >= 0){// 依次向上查找 <- // <---- // <------- if(array[tem] > key){ array[tem+step] = array[tem]; }else{ break; } } array[tem + step ] = key; } } } return array; } </script> </head> <body> <div>希尔排序</div> </body> </html>
相关文章推荐
- JavaScript排序算法——冒泡排序
- JavaScript排序算法——快速排序
- JavaScript排序算法——归并排序
- JavaScript排序算法——堆排序
- JavaScript排序算法——插入排序
- JavaScript跨域总结与解决办法
- 表单元素input事件兼容解决方案
- js类封装
- js验证手机号邮箱
- JSP 指令
- javascript
- javascript DIV跟随鼠标移动
- JavaScript编程艺术之Function
- JSON详解
- JavaScript高级程序设计学习笔记第二章
- !!(2个叹号)在js代码中出现怎么理解
- afnetworking中,规范json格式的代码---这样打印出来errormessage就非常的方便了,呵呵呵呵
- javascript鼠标右键菜单自定义效果
- javascript中关于字符串替换 replace() 方法的使用(咋个办呢 zgbn)
- 每天学习十分钟22之JavaScript