首頁 >Java >java教程 >Java程序按升序排序給定堆棧的元素

Java程序按升序排序給定堆棧的元素

Barbara Streisand
Barbara Streisand原創
2025-02-07 11:34:12251瀏覽

Java program to sort the elements of a given stack in ascending order

本教程將指導您如何使用 Java 將堆棧元素按升序排序。堆棧是計算機科學中的基本數據結構,遵循後進先出 (LIFO) 原則。

我們將分解一種簡單而有效的方法,該方法使用額外的臨時堆棧,提供詳細的分步說明,並包含完整的代碼示例。本教程非常適合那些希望增強對堆棧操作的理解並提高 Java 編程技能的人。

使用 Java 將堆棧按升序排序

堆棧就像一堆書,你只能取走最上面的那本。即,堆棧以後進先出的 (LIFO) 方式存儲項目。最後添加的項目是第一個被移除的項目。以下是使用輔助堆棧對堆棧元素進行排序的步驟:

步驟 1:創建一個臨時堆棧 我們將在此臨時存儲排序後的元素。

步驟 2:排序元素 要對堆棧元素進行排序,請按照以下步驟操作:

  • 當原始堆棧包含項目時。
  • 從原始堆棧中取出頂部的項目。
  • 如果臨時堆棧不為空,並且其頂部項目大於您剛剛取出的項目,則將臨時堆棧的項目移回原始堆棧,直到您可以將您的項目放在頂部。
  • 將您取出的項目放入臨時堆棧。

步驟 3:移回原始堆棧 一旦所有項目都在臨時堆棧中,將它們移回原始堆棧。現在,它們已排序!

示例

以下是一個示例:

<code class="language-java">import java.util.Stack;

public class StackSorter {
    public static void sortStack(Stack<integer> stack) {
        Stack<integer> tempStack = new Stack<>();

        while (!stack.isEmpty()) {
            int temp = stack.pop();

            while (!tempStack.isEmpty() && tempStack.peek() > temp) {
                stack.push(tempStack.pop());
            }
            tempStack.push(temp);
        }

        while (!tempStack.isEmpty()) {
            stack.push(tempStack.pop());
        }
    }

    public static void main(String[] args) {
        Stack<integer> stack = new Stack<>();
        stack.push(34);
        stack.push(3);
        stack.push(31);
        stack.push(98);
        stack.push(92);
        stack.push(23);

        System.out.println("原始堆栈: " + stack);
        sortStack(stack);
        System.out.println("已排序堆栈: " + stack);
    }
}</integer></integer></integer></code>

結論

使用另一個堆棧,您可以輕鬆地將堆棧元素按升序排序,而無需複雜的算法。

以上是Java程序按升序排序給定堆棧的元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn