Série d'algorithmes de tri rapide pour la structure des données Kingdom

Wellzhi 2022-07-23 21:04:44 阅读数:972

riealgorithmestrirapidepour

Résumé succinct:

Tri rapide = Division + Récursion

Élément pivot:

Habituellement, le premier élément du tableau d'ordre est sélectionné,Utilisé pour diviser le tableau de séquence en deux parties,La valeur de la partie gauche est inférieure au pivot,La valeur de la partie droite est supérieure au pivot

Étapes de l'algorithme:

  1. Déterminer le pivotpivot,Et stocker avec une nouvelle variable:int pivot = A[low]
  2. high: Scannez de l'arrière vers l'avant,Si Valeur de l'élément A[high] < pivot,Et A[low] = A[high],Sinonhigh--
  3. low: Scannez d'avant en arrière,Si Valeur de l'élément A[low] > pivot,Et A[high] = A[low],Sinonlow++

Réalisation de l'algorithme

int Partition(int A[], int low, int high) {

int pivot = A[low];
while (low < high) {

while (low < high && A[high] >= pivot) {

high--;
}
A[low] = A[high]; // Élément plus petit que l'élément pivot déplacé à gauche
while (low < high && A[low] <= pivot) {

low++;
}
A[high] = A[low]; // Élément plus grand que l'élément pivot déplacé à l'extrémité droite
}
A[low] = pivot; // Élément pivot en position finale 
return low; // Position finale de l'élément pivot , L'élément gauche est plus petit que l'élément pivot , L'élément droit est plus grand que l'élément pivot 
}
void QuickSort(int A[], int low, int high) {

if (low < high) {

int pivotPos = Partition(A, low, high); // Faites une partition
QuickSort(A, low, pivotPos - 1); // Division récursive à gauche 
QuickSort(A, pivotPos + 1, high); // Diviser Récursivement la partie droite 
}
}
Copyright:Cet article est[Wellzhi]Établi,Veuillez apporter le lien original pour réimprimer,remercier。 https://fra.fheadline.com/2022/204/202207232104173692.html