J'essaie donc de comprendre comment utiliser correctement le tri par insertion binaire sans avoir besoin d'une méthode d'échange ou quoi que ce soit de ce genre. Un de mes amis m'a donné une interprétation approximative du code nécessaire, mais je n'arrive pas à le faire comme je le veux.Insertion binaire Trier de la même manière que l'insertion normale Tri
private static int binaryInsertionSort(int[] b)
{
int left, right, middle, i, m;
int compareCount = 0;
for (int j = 1; j < b.length; j++)
{
left = b[j - 1];
right = b[j + 1];
if (b[j] < b[left])
{
i = left;
}
else
{
i = left + 1;
}
m = b[j];
for(int k = 0; k < (j - i - 1); k++)
{
b[j - k] = b[j - k - 1];
compareCount++;
}
b[i] = m;
}
return compareCount;
}
L'int compareCount est simplement juste pour voir combien de comparaisons sont effectuées au cours de la méthode. Maintenant, ce que j'essaie de faire est d'organiser un tableau d'entiers de manière régulière, spécifiquement comme b [0] = 1, b [1] = 2, ...... b [63] = 64. Dans mon principal méthode je crée le tableau et assigner des valeurs à l'inverse: b [0] = 64, b [1] = 63, etc. Comment puis-je obtenir ce code pour les réorganiser dans le mode normal que je cherche? J'ai été capable de le faire très simplement avec un tri normal, mais c'est un peu plus compliqué à mes yeux.