Rekursion Merge-Sort -

Dies ist ein code aus Einführung in die Programmierung mit Java zu Merge-Sort. Diese Methode nutzt eine Rekursion Implementierung.

public class MergeSort {
  2    /** The method for sorting the numbers */
  3    public static void mergeSort(int[] list) {
  4      if (list.length > 1) {
  5        //Merge sort the first half
  6        int[] firstHalf = new int[list.length / 2];
  7        System.arraycopy(list, 0, firstHalf, 0, list.length / 2);
  8        mergeSort(firstHalf);
  9  
 10        //Merge sort the second half
 11        int secondHalfLength = list.length - list.length / 2;
 12        int[] secondHalf = new int[secondHalfLength];
 13        System.arraycopy(list, list.length / 2,
 14          secondHalf, 0, secondHalfLength);
 15        mergeSort(secondHalf);
 16  
 17        //Merge firstHalf with secondHalf into list
 18        merge(firstHalf, secondHalf, list);
 19      }
 20    }

Meine Frage: ist in Zeile 8 ruft der rekursions-Methode zurück, um "mergeSort"? Wenn vom Anfang der Methode, die "firstHalf" - array wird erneut erstellt und die Länge der Hälfte kurz. Ich denke, die "firstHalf" kann nicht neu erstellt und die Länge sollte nicht verändert werden, wenn ein array ist schon definiert.

Hier ist die ganze code-link: Merge-Sort Java.

  • firstHalf neu erstellt, wie es es gehört zum Umfang der (list.length > 1) so wird für jeden Aufruf MergeSort mit einem list.length > 1 erhalten Sie und andere int[] firstHalf. Das war deine Frage oder?
  • Ich ermutige Sie, schauen Sie unter diesem link algs4.cs.princeton.edu/22mergesort
InformationsquelleAutor HelenWang | 2015-09-07
Schreibe einen Kommentar