JavaScript排序算法——希尔排序
2024-10-19 05:30:46
<!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>
最新文章
- 【OpenJudge 1665】完美覆盖
- codeforces A. Bayan Bus(简单模拟)
- 使用XtraGrid自定义列计算1 z
- c 深度剖析 1
- Java 中方法的重载
- JavaScript基础精华03(String对象,Array对象,循环遍历数组,JS中的Dictionary,Array的简化声明)
- 【Winform】Winform 制作一键发布web
- python中os模块path.abspath()返回的并不是绝对值,而是个错误的不存在的拼接地址
- [置顶] API相关工作的个人总结_工作中琐碎细节的总结二
- 【LeetCode】2.Add Two Numbers
- PAT (Advanced Level) 1006. Sign In and Sign Out (25)
- hdu--1711--kmp应用在整形数组--Number Sequence
- Testng基本问题
- Mysql使用中文字段排序的实现--order by
- ABP新增模块可能遇到的问题
- jmeter性能测试入门
- 跑 vue 项目
- 621. Task Scheduler
- linux C++ 多线程使用pthread_cond 条件变量
- 【javascript】利用jquery ajaxPrefilter防止ajax重复提交