当前位置:首页 > JavaScript

js用栈实现排序

2026-03-01 20:08:17JavaScript

使用栈实现排序的方法

在JavaScript中,可以通过两个栈来模拟排序算法。这种方法类似于插入排序,利用辅助栈来保持元素的顺序。以下是具体实现步骤:

初始化两个栈

创建一个主栈stack用于存放未排序的元素,另一个辅助栈tempStack用于临时存放已排序的元素。

const stack = [34, 3, 31, 98, 92, 23];
const tempStack = [];

排序过程

从主栈中弹出元素,与辅助栈的栈顶元素比较,确保辅助栈中的元素始终按升序排列。

while (stack.length > 0) {
    const current = stack.pop();
    while (tempStack.length > 0 && tempStack[tempStack.length - 1] > current) {
        stack.push(tempStack.pop());
    }
    tempStack.push(current);
}

结果输出

排序完成后,辅助栈tempStack中的元素即为升序排列的结果。

console.log(tempStack); // [3, 23, 31, 34, 92, 98]

完整代码示例

以下是将上述步骤整合为一个完整函数的代码:

js用栈实现排序

function sortStack(stack) {
    const tempStack = [];
    while (stack.length > 0) {
        const current = stack.pop();
        while (tempStack.length > 0 && tempStack[tempStack.length - 1] > current) {
            stack.push(tempStack.pop());
        }
        tempStack.push(current);
    }
    return tempStack;
}

const stack = [34, 3, 31, 98, 92, 23];
const sortedStack = sortStack(stack);
console.log(sortedStack); // [3, 23, 31, 34, 92, 98]

注意事项

  • 该方法的时间复杂度为O(n²),适合小规模数据排序。
  • 确保主栈中的元素全部弹出并正确插入辅助栈,否则会导致排序失败。

标签: js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…