递归排序队列

csbfibhn  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(306)

我正在尝试使用递归方法对队列进行排序(按升序)。输入由用户输入。下面这个没有给我正确的输出。例如:12。元素:6 12 3 4 5 1 7 8 10 9 11 2,结果:2 11 9 10 8 7 1 5 4 3 12 6,这是不正确的。我在想哪一部分不对。我不想改变主方法中的任何内容。

import java.util.*;

public class Source {
    public static void main(String args[]) {
        Queue<Integer> queue = new LinkedList<Integer>();
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        while (n-- > 0) 
            queue.add(s.nextInt());
        sort(queue);
    }

    static void FrontToLast(Queue<Integer> queue,int qsize) {

    if (qsize <= 0) {
        return; 
    }
    queue.add(queue.peek()); 
    queue.remove(); 
    FrontToLast(queue, qsize - 1); 
    }

    static void pushInQueue(Queue<Integer> queue , int temp, int qsize) {
    if (queue.isEmpty() || qsize == 0)  
    { 
        queue.add(temp); 
        return; 
    }
    else if (temp <= queue.peek()) 
    { 
        queue.add(temp);
        FrontToLast(queue, qsize); 
    }
    else 
    { 
        queue.add(queue.peek()); 
        queue.remove(); 
        pushInQueue(queue, temp, qsize - 1); 
    }
}
    static void sort(Queue<Integer> queue) {
        if (queue.isEmpty()) {
        return; 
        }
        int temp = queue.peek();
         queue.remove(); 
         sort(queue); 
         pushInQueue(queue, temp, queue.size());

        while (!queue.isEmpty())  
    { 
        System.out.print(queue.peek() + " "); 
        queue.remove();
    }
    }
}
wh6knrhe

wh6knrhe1#

import java.util.LinkedList;

导入java.util.queue;导入java.util.scanner;
公共类源{static queue queue=new linkedlist();//改变

public static void main(String args[]) {

    Scanner s = new Scanner(System.in);
    int n = s.nextInt();
    while (n-- > 0)
        queue.add(s.nextInt());
    sort(queue);
    System.out.println("Final Result : " + queue); // changed
}

static void FrontToLast(Queue<Integer> queue, int qsize) {

    if (qsize <= 0) {
        return;
    }
    queue.add(queue.peek());
    queue.remove();
    FrontToLast(queue, qsize - 1);
}

static void pushInQueue(Queue<Integer> queue, int temp, int qsize) {
    if (queue.isEmpty() || qsize == 0) {
        queue.add(temp);
        return;
    } else if (temp <= queue.peek()) {
        queue.add(temp);
        FrontToLast(queue, qsize);
    } else {
        queue.add(queue.peek());
        queue.remove();
        pushInQueue(queue, temp, qsize - 1);
    }
}

static void sort(Queue<Integer> queue) {
    if (queue.isEmpty()) {
        return;
    }
    int temp = queue.peek();
    queue.remove();
    sort(queue);
    pushInQueue(queue, temp, queue.size());

    /*
     * while (!queue.isEmpty()) { System.out.print(queue.peek() + " ");
     * queue.remove(); }
     */
}

}

相关问题