当前位置:首页 > 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实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…