Voici mon code:Trier par fusion: Pourquoi ma méthode de fusion ajoute-t-elle seulement un numéro à la file d'attente?
void mergeHelper(Queue<T> input1, Queue<T> input2, Queue<T> output) {
// TODO 4
if(!input1.isEmpty())
{
T ip1 = input1.dequeue();
if(!input2.isEmpty())
{
T ip2 = input2.dequeue();
if(ip1.compareTo(ip2)<=0)
output.enqueue(ip1);
else
output.enqueue(ip2);
}
else
{
output.enqueue(ip1);
}
mergeHelper(input1, input2, output);
}
else if(!input2.isEmpty())
{
T ip2 = input2.dequeue();
if(!input1.isEmpty())
{
T ip1 = input1.dequeue();
if(ip1.compareTo(ip2)<=0)
output.enqueue(ip1);
else
output.enqueue(ip2);
}
else
{
output.enqueue(ip2);
}
mergeHelper(input1, input2, output);
}
}
Voici un pilote temporaire:
public class MergeDriver {
public static void main(String[] args) {
MergeSorter<Integer> ms = new MergeSorter<>();
Queue<Integer> one = new Queue<>();
Queue<Integer> two = new Queue<>();
one.enqueue(new Integer(2));
two.enqueue(new Integer(1));
Queue<Integer> res = ms.merge(one, two);
System.out.println("The size of res is: "+ res.size());
System.out.println("The value stored is: ");
while(!res.isEmpty())
System.out.println((int)res.dequeue());
}
}
Seulement 1 est ajouté à la file d'attente de sortie et le reste est pas.
La taille de la file d'attente résultante est toujours une et le seul élément le plus petit est ajouté à la file d'attente. Qu'est-ce que je fais mal?
N'importe quel but spécial d'utiliser 'Queue'? Vous pouvez effectuer un tri par fusion avec des tableaux simples. – Kaushal28