棧排序,佇列排序

2021-08-26 14:45:59 字數 476 閱讀 1419

同學給我出了乙個棧排序的題,意思給乙個包含無序數的棧,讓輸出乙個順序排列的棧。

直接排序是不可能的,棧只能在一端進行操作。因此需要借助輔助棧。

思路是將原棧s的資料壓入輔助棧s2,輔助棧用於儲存最終結果。輔助棧中的元素是有序的。

壓棧過程需要比較兩個棧棧頂元素大小關係。如果s棧頂小於s2的棧頂元素,則需要找到s2的棧中第乙個大於s1棧頂的元素,然後將s2中的元素出棧到s中。最後將s一開始的那個棧頂元素放入s2。

實現完棧以後,再想想佇列也可以排序嘛,就寫了個佇列排序的演算法。有些粗糙,感覺可以改進。

#include

#include

#include

using namespace std;

stackstacksort(stacks)

s2.push(tmp);

}/* while(!s2.empty())

queuequeuesort(queueq)

棧 佇列和排序

棧,順序表和煉表都能實現 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數 佇列和棧同理 queue 建立乙個空的佇列 enqueue item 往佇列中新增乙...

排序 KMP演算法 佇列 棧

一 希爾排序 1.初次取序列的一半為增量,以後每次減半,直到增量為1 round n 2 1 2.每組遍歷 3.組內排序 1 希爾排序 2int shell sort int data,int len 315 data j gap temp 16 17 1819 return0 20 二 快速排序 ...

LeetCode 棧 棧排序

棧排序。編寫程式,對棧進行排序使最小元素位於棧頂。最多只能使用乙個其他的臨時棧存放資料,但不得將元素複製到別的資料結構 如陣列 中。該棧支援如下操作 push pop peek 和 isempty。當棧為空時,peek 返回 1。示例 輸入 sortedstack push push peek po...