国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

雙棧排序練習(xí)

2019-11-08 01:52:51
字體:
供稿:網(wǎng)友

請編寫一個程序,按升序?qū)_M(jìn)行排序(即最大元素位于棧頂),要求最多只能使用一個額外的棧存放臨時數(shù)據(jù),但不得將元素復(fù)制到別的數(shù)據(jù)結(jié)構(gòu)中。 給定一個int[] numbers(C++中為vector),其中第一個元素為棧頂,請返回排序后的棧。請注意這是一個棧,意味著排序過程中你只能訪問到第一個元素。 測試樣例: [1,2,3,4,5] 返回:[5,4,3,2,1] 思路非常簡單,利用一個輔助棧,每次比較排序棧和輔助棧的頂元素,如果排序棧較小直接壓入輔助棧,并彈出排序棧,否則將輔助棧的元素彈出并壓在排序棧棧頂元素的后面。知道排序棧沒有元素了,之后將輔助棧的元素全部導(dǎo)入排序棧,就完成排序。

class TwoStacks {public: vector<int> twoStacksSort(vector<int> numbers) { stack<int> mystack,help; for(auto i=numbers.end()-1;i>=numbers.begin();--i) mystack.push(*i); while(!mystack.empty()) { if(help.empty()){ help.push(mystack.top()); mystack.pop(); } else if(mystack.top()<=help.top()) { help.push(mystack.top()); mystack.pop(); } else { int temp=mystack.top(); mystack.pop(); mystack.push(help.top()); mystack.push(temp); help.pop(); } } while(!help.empty()) { mystack.push(help.top()); help.pop(); } for(auto &c:numbers) { c=mystack.top(); mystack.pop(); } return numbers; }};
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒙山县| 泗阳县| 偃师市| 麟游县| 原平市| 三原县| 阿拉善盟| 巢湖市| 崇州市| 马龙县| 崇信县| 安新县| 馆陶县| 安西县| 西昌市| 彭州市| 科技| 镇康县| 苍山县| 星座| 迁安市| 长海县| 巩义市| 开阳县| 平江县| 营山县| 岫岩| 陆川县| 龙游县| 六安市| 雷山县| 翁源县| 金乡县| 奉贤区| 林周县| 澳门| 兴安盟| 马边| 乌拉特后旗| 桦南县| 上林县|