需要一些帮助。在我的作业上工作,我必须使用ArrayDeque对列表进行排序。我可以检查第一个和最后一个元素。 我有一个列表,例如
int[] list = {6, 8, 7};
第一个元素 - 6 - 将进入空数组,没问题。
第二个元素 - 8 - 将在6后面,所以我们将[6,8]
,然后是7.因为我不能把它放在6的前面,我不能把它放在8后面。所以我必须将7存储到其他列表中,以后我可以返回。我怎么做?任何提示都是受欢迎的。
谢谢。
(对不起,如果以前曾经问过这个问题,但无法找到解决方案)
答案 0 :(得分:0)
您可以做的是将索引x处的int值存储到局部变量中,然后遍历数组,查看是否存在低于当前存储值的值,如果是,则变为新的较低值。完成数组后,您可以将其输入新数组。
答案 1 :(得分:0)
首先让我澄清你的约束。你只能:
使用堆栈将数组中的值添加到上述结构中的算法:
如果不允许使用堆栈,但允许使用递归,则可以将调用堆栈用于同一端
答案 2 :(得分:0)
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
ArrayDeque<Integer> container = new ArrayDeque<>();
ArrayDeque<Integer> container2 = new ArrayDeque<>();
System.out.println("Please enter 10 number with space");
for(int i=0;i<10;i++){
container.add(sc.nextInt());
}
while (!isSorted(container.isEmpty()?container2:container)) {
while (!container.isEmpty()) {
int a = container.poll();
if(container.peek()!=null && a<container.peek()){
if(container2.peek()!=null && container2.peek()>container.peek()){
container2.addFirst(a);
}else{
container2.addLast(a);
}
}else if(container.peek()!=null){
if(container2.peek()!=null && container2.peek()>container.peek()){
container2.addFirst(container.poll());
}else{
container2.addLast(container.poll());
}
container.addFirst(a);
}else{
container2.addLast(a);
}
}
while (!container2.isEmpty()) {
int a = container2.poll();
if(container2.peek()!=null && a<container2.peek()){
if(container.peek()!=null && container.peek()>container2.peek()){
container.addFirst(a);
}else{
container.addLast(a);
}
}else if(container2.peek()!=null){
if(container.peek()!=null && container.peek()>container2.peek()){
container.addFirst(container2.poll());
}else{
container.addLast(container2.poll());
}
container2.addFirst(a);
}else{
container.addLast(a);
}
}
}
while (!container.isEmpty()) {
System.out.println(container.poll());
}
System.out.println("---------------------------");
while (!container2.isEmpty()) {
System.out.println(container2.poll());
}
}
static boolean isSorted(ArrayDeque<Integer> con){
boolean answer = true;
for(int i=0;i<con.size()-1;i++){
int a = con.poll();
con.addLast(a);
if(con.peek()!=null && a>con.peek()) answer= false;
}
con.addLast(con.poll());
return answer;
}