Idee des Sortieralgorithmus zusammenführen:
Teilen – Erobern; jeder rekursive Prozess umfasst drei Schritte: Zerlegen Sie die zu sortierende Folge von n Elementen in zwei Teilfolgen, wobei jede Teilfolge n/2 Elemente enthält.
Zweitens Governance: Rufen Sie MergeSort für jede Teilsequenz separat auf und führen Sie rekursive Operationen aus. Drittens Merge: Führen Sie zwei sortierte Teilsequenzen zusammen, um Sortierergebnisse zu generieren.
public static void mergeSort(int[] a, int[] tmp, int left, int right) { if (left < right) { int mid = left + (right - left) / 2; mergeSort(a, tmp, left, mid);// Linkssortierung mergeSort(a, tmp, mid + 1, right);// Rechtssortierung merge(a, tmp, left, mid + 1, right);// Links und rechts zusammenführen} }public static void merge(int[] a, int[] tmp, int left, int rightPos, int right) { int leftEnd = rightPos - 1; int tmpPos = left; int num = right - left + 1; while (left <= leftEnd && rightPos <= right) { if (a[left] < a[rightPos]) { tmp[tmpPos++] = a[left++]; } else { tmp[tmpPos++] = a[rightPos++]; } } while (left <= leftEnd) { tmp[tmpPos++] = a[left++] } while (rightPos <= right) { tmp[tmpPos++ ] = a[rightPos++]; } for (int i = 0; i < num; i++, right--) { a[right] = tmp[rechts]; } }Schematische Darstellung des Merge-Algorithmus:
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.