用乙個棧實現另乙個棧的排序

2021-10-08 11:07:28 字數 979 閱讀 9412

乙個棧中元素的型別為整型,現在想將該棧從頂到底按從大到小的順序排序,只許申請乙個棧。除此之外,可以申請新的變數,但不能申請額外的資料結構。如何完成排序?

輸入描述:

第一行輸入乙個n,表示棧中元素的個數

第二行輸入n個整數a

ia_i

ai​表示棧頂到棧底的各個元素

輸出描述:

輸出一行表示排序後的棧中棧頂到棧底的各個元素。

示例1輸入

5

5 8 4 3 6

輸出
8 6 5 4 3
備註:

1 ≤n

≤104

1 \leq n \leq 10^4

1≤n≤104−1

06≤a

i≤10

6-10^6 \leq a_i \leq 10^6

−106≤a

i​≤1

06題解:將要排序的棧記為 stack,申請乙個輔助棧 help 。在 stack 棧上執行 pop 操作,彈出的元素記為 now :

在將 stack 中的所有元都素壓入到 help 中後,help 中的元素從棧頂到棧底是從小到大的順序,將 help 中的元素重新壓入 stack 中即可。

**:

#include

using

namespace std;

const

int n =

10010

;int stk[n]

;int help[n]

;int top1, top2;

intmain

(void)}

while

(top2 >=

0) stk[

++top1]

= help[top2--];

while

(top1 >=0)

return0;

}

棧 用乙個棧實現另乙個棧的排序

題面 用乙個棧實現另外乙個棧的頂到底降序排序 要求 不能使用額外的資料結構,但可以使用新的變數。思路 給定棧s,輔助棧help 1.遍歷給定棧 出棧 棧頂出棧cur,與help棧頂比較,如果大於輔助棧頂元素值,那麼輔助棧棧頂元素出棧至s棧,直到help棧頂元素值 cur 2.help壓入cur 2....

用乙個棧實現另乙個棧的排序

背景 乙個棧的排序其實是很好做的,但是現在要你將該棧從頂到底從大到小排序,只允許申請乙個輔助棧,可以申請有限個變數,除此之外不能再申請額外的資料結構,你該怎麼搞?演算法 設要排序的棧為st,輔助棧為help,從st彈出的元素記為cur,help的棧頂元素記為top。一直執行上述操作,直到st為空結束...

用乙個棧實現另乙個棧的排序

題目 乙個棧中元素型別為整型,想將該棧從頂到底按從大到小排序,只允許申請乙個棧。除此之外,可以申請新變數,但不能申請額外的資料結構。舉例 public static void main string args 用乙個棧實現另乙個棧的排序 public static void sortstack st...