Utilisation de stratégie de division et de conquête Comment fusionner des tableaux triés chacun avec n éléments dans un seul tableau d'éléments k * n?Stratégie de division et de conquête pour fusionner plusieurs tableaux triés
Comprendre jusqu'à présent: j'ai eu une certaine compréhension sur les étapes à faire diviser pour mieux régner comme:
Diviser la liste des tableaux en deux listes, chacun des tableaux k/2. Fusionner récursivement les tableaux dans les 2 listes et enfin fusionner les 2 tableaux triés résultants dans le tableau de sortie.
Quelques idées et aide nécessaires !!
public int[] merge(int[][] arrays){
int k = arrays.length;
int n = arrays[0].length;
if size(arrays) == 1:
return arrays.pop()
else
// For longer lengths split the array into two
int half = arrays.length/2;
int[] first_Half = new int[half];
int[] second_Half = new int[lists.length - half];
return merge(merge(first_half),merge(second_half));
J'ai essayé passer le tableau 2-Dim liste des listes et a changé ma première et la deuxième moitié en 2 Dim. tableau comme conseillai mais je reçois l'erreur: « méthode kWayMerge(List<List>)
dans la fusion de type n'est pas applicable pour les arguments (int[][])
sur la méthode kWayMerge
Voici les modifications apportées et pour la fusion régulière puis-je utiliser Arrays.copyOf
ou méthode clone()
// solve the problem separately in each sub-array
List a = kWayMerge(firstHalf);
// K-merge operation using divide and conquer strategy
public int[] kWayMerge(List<List>array){ // gets a list of lists as input
int[][] firstHalf; int[][] secondHalf;
if(array.size() == 1) return null; // if currently have 1 array, return it - stop clause
else {
int half = array.size()/2;
firstHalf = new int[half][];
secondHalf = new int[array.size()-half][];
// solve the problem separately in each sub-array
List a = kWayMerge(firstHalf);
}
return merge((firstHalf),(secondHalf));
}
public int[] merge(int[][] arr1, int[][] arr2) {
return null;
}
Votre idée va bien, qu'est-ce qui vous empêche de l'implémenter? –
actuellement j'essaye de tester l'algorithme mais j'obtiens l'erreur sur la dernière fusion qui demande de changer le paramètre de la méthode de fusion de 2-Dim au seul Dim mais je veux passer le tableau 2-Dim –