Je suis en train de comprendre un code, exactement ce &(ipA[iLower + 1]
signifie dans le code ci-dessous (fonction de partition d'un quicksort?Un débutant C question
void Partition(int* ipA, int iSize) {
// Partitions of size 0 or 1 are already sorted
if (iSize <= 1) {
return;
}
// Select a pivot from the array randomly
int iPivot = ipA[rand() % iSize];
// Indices of the entries to be swapped
int iLower = 0;
int iUpper = iSize - 1;
// Partition array into sections above and below the pivot
while (iLower < iUpper) {
while (ipA[iLower] < iPivot) {
++iLower;
}
while (ipA[iUpper] > iPivot) {
--iUpper;
}
// Swap the entries at the lower and upper indices
int iTemp = ipA[iLower];
ipA[iLower] = ipA[iUpper];
ipA[iUpper] = iTemp;
}
// Recursively call partition on each partititon.
Partition(ipA, iLower);
Partition(&(ipA[iLower + 1]), iSize - iUpper - 1);
}
merci beaucoup pour l'explication, je me demande comment pourriez-vous faire cette partie avec java? – Hellnar
Vous ne pouviez pas, au moins, pas directement. Soit vous devez créer un nouveau tableau et copier sur les valeurs que vous voulez (cher), soit vous modifiez la fonction de partition pour prendre un index de départ. Dans ce cas, parce que la fonction modifie le tableau, seule la dernière approche fonctionnera. – Thomas