兩個棧(資料棧 空棧)如何實現排序?

2021-08-19 16:16:52 字數 671 閱讀 7683

分析:

無論是從小到大排序,還是從大到小排序,重要的是按照層次找出最大(最小數)。

資料棧 stack

輔助棧 help

設定游標數cur

每次help中的數比cur大,則彈出,然後再push進cur(小)。

一次迴圈,也就是help中的都時push進(從小到大的數,即小數壓底)。

直到stack彈空,在將help中的數壓入stack,便完成了小數先輸出的任務(後進先出)

**如下

public

class

stackbystacksort

help.push(cur);

//i++;

"help-: "+help.tostring());

"stack--: "+stack.tostring());

}while (!help.isempty())

}public

static

void

main(string args)

}}

時間複雜度

通過測算,一般情況下時間複雜度要明顯小於n^2,當然這跟stack中數的混序狀態有關,最佳狀態為o(n)

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...

兩個棧實現佇列,兩個佇列實現棧

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...

兩個棧實現佇列 兩個佇列實現棧

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...