Files
BUT2/TP_DEV3.2/File/Fusion.java

83 lines
1.1 KiB
Java

import java.util.*;
public class Fusion<T extends Comparable<T>> {
private Queue<T> scinder(Queue<T> file){
Queue<T> moitie = new LinkedList<>();
int taille = file.size()/2;
for(int i=0; i<taille; i++){
moitie.add(file.remove());
}
return moitie;
}
private Queue<T> fusionner(Queue<T> file1, Queue<T> file2){
Queue<T> fusion = new LinkedList<>();
while(!file1.isEmpty()&&!file2.isEmpty()){
if (file1.peek().compareTo(file2.peek()) <= 0){
fusion.add(file1.remove());
}
else{
fusion.add(file2.remove());
}
}
fusion.addAll(file1);
fusion.addAll(file2);
return fusion;
}
private Queue<T> trier(Queue<T> file){
if(file.size()<=1){
return file;
}
Queue<T> moitie = scinder(file);
Queue<T> gauche = trier(moitie);
Queue<T> droite = trier(file);
return fusionner(gauche,droite);
}
public static void main(String[] args) {
Queue<Integer> file = new LinkedList<>();
file.add(5);
file.add(2);
file.add(9);
file.add(1);
Fusion<Integer> tri = new Fusion<>();
Queue<Integer> resultat = tri.trier(file);
System.out.println("File triée : " + resultat);
}
}