归并排序(JS)
// 为了方便一些调试场景,具体的外层函数表达式使用的是var声明语句 var merge_sort = function(arr) { sort(arr, 0, arr.length - 1); }; var sort = function(a, l, r) { // 终止排序过程 if (l >= r) return; // 递归拆分(1分2) const m = ((r - l) >> 1) + l; sort(a, l, m); sort(a, m + 1, r); // 合并子数组(2合1) if (a[m] > a[m + 1]) merge(a, l, m, r); }; var merge = function(a, l, m, r) { const tmp = a.slice(l, r + 1); let i = l; let j = m + 1; for (let k = l; k <= r; k++) { if (i > m) { a[k] = tmp[j - l]; j++; } else if (j > r) { a[k] = tmp[i - l]; i++; } else if (tmp[i - l] <= tmp[j - l]){ a[k] = tmp[i - l]; i++; } else{ a[k] = tmp[j - l]; j++; } } };
// -- 完善中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步