【发布时间】:2014-09-06 05:27:44
【问题描述】:
有人可以帮忙看看我的代码吗?非常感谢你的帮助。 输入堆栈是 [5, 2, 1, 9, 0, 10],我的代码给出了输出堆栈 [0, 9, 1, 2, 5, 10],9 不在正确的位置。
import java.util.*;
public class CC3_6 {
public static void main(String[] args) {
int[] data = {5, 2, 1, 9, 0, 10};
Stack<Integer> myStack = new Stack<Integer>();
for (int i = 0; i < data.length; i++){
myStack.push(data[i]);
}
System.out.println(sortStack(myStack));
}
public static Stack<Integer> sortStack(Stack<Integer> origin) {
if (origin == null)
return null;
if (origin.size() < 2)
return origin;
Stack<Integer> result = new Stack<Integer>();
while (!origin.isEmpty()) {
int smallest = origin.pop();
int remainder = origin.size();
for (int i = 0; i < remainder; i++) {
int element = origin.pop();
if (element < smallest) {
origin.push(smallest);
smallest = element;
} else {
origin.push(element);
}
}
result.push(smallest);
}
return result;
}
}
【问题讨论】:
-
这看起来根本不像一个排序算法。在
sortStack内的for循环中,您将相同的元素推回origin堆栈,并且从不查看堆栈的其余元素。