sort numbers with three stacks
s3 是用来存放sort 结果的,整个算法非常像 selection sort/bubble sort
1: 每次从s1中选出最小的一个放在s3 中,其他非最小的放入s2 中
2: 然后把s2 的数字放回到s1 中
循环结束后,s3 中的就是sort 好的结果
1 public void sort(LinkedList<Integer> s1) {
2 Deque<Integer> s2 = new LinkedList<>();
3 Deque<Integer> s3 = new LinkedList<>();
4
5 int size = s1.size();
6 for (int i = 0; i < size; i++) {
7 int globMin = Integer.MAX_VALUE;
8 while (!s1.isEmpty()) {
9 int top = s1.pop();
10 globMin = Math.min(globMin, top);
11 s2.push(top);
12 }
13
14 s3.push(globMin);
15 while (!s2.isEmpty()) {
16 int top = s2.pop();
17 if (top == globMin) {
18 globMin = Integer.MAX_VALUE;
19 continue;
20 }
21 s1.push(top);
22 }
23 }
24
25 while (!s3.isEmpty()) {
26 s1.push(s3.pop());
27 }
28 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步