📄 13-5 希尔排序.htm
字号:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=GB2312" />
<title>13-5 希尔排序</title>
<style>
* { font-size:12px; font-family:宋体, Arial; } /*规定了所有的字体样式*/
body { overflow:auto; }
</style>
<script>
window.onload = function(){
var ary, st, re, timeCost;
//生成一个长度1000的随机数组
ary = create_random_array(1000);
//记录开始时间
st = new Date();
//插入排序
re = sort(ary);
//记录用时
timeCost = ((new Date())-st);
//输出结果
alert("插入排序耗时 " + timeCost + " 毫秒");
}
//新建一个指定长度的数组,并对其元素赋以随机的数值
function create_random_array(len){
var re = new Array(len);
for(var i=0; i<len; i++)re[i] = Math.random();
return(re);
}
//插入排序算法
function sort(ary){
var len, inc;
//局部函数
//按增量d进行插入排序
function sort_d(d){
var j, tmp;
//将数组中“d”至“len-1”的元素分别插入各组当前的有序区
for(var i=d; i<len; i++){
if(ary[i]<ary[i-d]){
//tmp只是暂存单元,不是哨兵
tmp = ary[i];
j = i - d;
//查找插入位置
do{
//后移记录
ary[j+d] = ary[j];
j -= d;
}while(j>-1 && tmp<ary[j]);
//执行插入
ary[j+d] = tmp;
}
}
}
//设定增量初值
inc = len = ary.length;
do{
//计算增量序列中下一个增量
inc = parseInt(inc/3) + 1;
//执行按增量的Shell排序
sort_d(inc);
}while(inc>1);
return(ary);
}
</script>
</head>
<body>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -