使用js实现希尔排序
希尔排序(Shell Sort)是插入排序的一种更高效的改进版本,也称为缩小增量排序。它的基本思想是:先将整个待排序的记录序列分割成为若干子序列(由相隔某个“增量”的记录组成)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。
以下是一个使用 JavaScript 实现的希尔排序示例:
function shellSort(arr) {
var len = arr.length,
temp,
gap = 1;
// 动态定义间隔序列
while(gap < len/3) {
gap = gap*3+1;
}
for (gap; gap > 0; gap = Math.floor(gap/3)) {
for (var i = gap; i < len; i++) {
temp = arr[i];
var j = i - gap;
while (j >= 0 && arr[j] > temp) {
arr[j+gap] = arr[j];
j -= gap;
}
arr[j+gap] = temp;
}
}
return arr;
}
// 测试用例
var arr = [4,7,2,9,1,5,8,3,6,0];
console.log("原始数组:", arr);
console.log("希尔排序结果:", shellSort(arr));
在这个示例中,我们首先计算出一个初始的间隔值 gap
,然后在每次迭代中,我们都使用这个间隔值对数组进行分组,并对每组进行插入排序。在每次迭代结束后,我们都会减小间隔值,直到间隔值变为 1,此时整个数组都会被视为一个组,进行最后一次插入排序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话