Code source final
Voici le code source final pour le tri fusion :
import java.util.Arrays;
public class MergeSort {
public static void mergeSort(int[] arrToSort, int startIdx, int endIdx) {
if (startIdx >= endIdx) {
return;
}
int midIdx = startIdx + (endIdx - startIdx) / 2;
mergeSort(arrToSort, startIdx, midIdx);
mergeSort(arrToSort, midIdx + 1, endIdx);
merge(arrToSort, startIdx, midIdx, endIdx);
}
public static void merge(int[] arrToSort, int startIdx, int midIdx, int endIdx) {
int[] leftArr = new int[midIdx - startIdx + 1];
int[] rightArr = new int[endIdx - midIdx];
for (int i = 0; i < leftArr.length; i++) {
leftArr[i] = arrToSort[startIdx + i];
}
for (int i = 0; i < rightArr.length; i++) {
rightArr[i] = arrToSort[midIdx + i + 1];
}
int leftArrIdx = 0, rightArrIdx = 0, sortedArrIdx = startIdx;
while ((leftArrIdx < leftArr.length) && (rightArrIdx < rightArr.length)) {
if (leftArr[leftArrIdx] < rightArr[rightArrIdx]) {
arrToSort[sortedArrIdx] = leftArr[leftArrIdx];
leftArrIdx += 1;
} else {
arrToSort[sortedArrIdx] = rightArr[rightArrIdx];
rightArrIdx += 1;
}
sortedArrIdx += 1;
}
while (leftArrIdx < leftArr.length) {
arrToSort[sortedArrIdx] = leftArr[leftArrIdx];
leftArrIdx += 1;
sortedArrIdx += 1;
}
while (rightArrIdx < rightArr.length) {
arrToSort[sortedArrIdx] = rightArr[rightArrIdx];
rightArrIdx += 1;
sortedArrIdx += 1;
}
}
public static void main(String[] args) {
//crée un tableau d'entiers non trié
int[] arrToSort = { 4, 2, 8, 0, 1, 6 };
//trie le tableau d'entiers en utilisant le tri fusion
mergeSort(arrToSort, 0, arrToSort.length - 1);
//affiche le tableau trié
System.out.println(Arrays.toString(arrToSort));
//crée un tableau d'entiers vide
int[] emptyArr = {};
//trie le tableau vide
mergeSort(emptyArr, 0, emptyArr.length - 1);
//affiche le tableau trié
System.out.println(Arrays.toString(emptyArr));
//crée un tableau à un seul élément
int[] singleElementArr = {7};
//trie le tableau à un seul élément
mergeSort(singleElementArr, 0, singleElementArr.length - 1);
//affiche le tableau trié
System.out.println(Arrays.toString(singleElementArr));
//crée un tableau d'entiers négatifs
int[] arrWithNegatives = {-7, 2, -9, 0, -1, 6, 8};
//trie le tableau d'entiers négatifs
mergeSort(arrWithNegatives, 0, arrWithNegatives.length - 1);
//affiche le tableau trié
System.out.println(Arrays.toString(arrWithNegatives));
//crée un tableau de chaînes de caractères
String[] strsToSort = {"John", "David", "Emily", "Bob", "Christine"};
//trie le tableau de chaînes de caractères
mergeSort(strsToSort, 0, strsToSort.length - 1);
//affiche le tableau trié
System.out.println(Arrays.toString(strsToSort));
}
}