Ist dieses Struktogramm passend für mein Merge-Sort Code?

Ist das folgende Struktogramm, welches ich erstellt habe, passend zu meinem Java Merge-Sort Code oder muss ich noch was nachbessern?

Code:

import java.util.Arrays;
import java.util.Random;

public class MergeSortWithMetrics {
  // Zähler für Sortierschritte
  static long comparisons = 0;
  static long assignments = 0;

  public static void main(String[] args) {
    // Konfiguration: Array-Größe und Zahlbereich
    int arraySize = 10000; // Größe des Arrays
    int numberRange = 214748647; // Bereich der Zufallszahlen (0 bis numberRange)
    boolean ArrayAusgebenAn = false;
    boolean StatistikenAn = true;
    
    // Zufälliges Array erstellen
    int[] array = generateRandomArray(arraySize, numberRange);
    if (ArrayAusgebenAn){
      System.out.println("Unsortiertes Array:");
      System.out.println(Arrays.toString(array));
    }
    
    // Zeitmessung starten
    long startTime = System.currentTimeMillis();
    // MergeSort aufrufen
    int[] sortedArray = mergeSort(array);
    // Zeitmessung beenden
    long endTime = System.currentTimeMillis();
    // Sortiertes Array ausgeben
    if (ArrayAusgebenAn){
    System.out.println("Sortiertes Array:");
    System.out.println(Arrays.toString(sortedArray));
    }
    
    // Statistiken ausgeben
    if (StatistikenAn){
    System.out.println("Sortierschritte:");
    System.out.println("Vergleiche: " + comparisons);
    System.out.println("Zuweisungen: " + assignments);
    System.out.println("Zeitmessung: " + (endTime - startTime) + " ms");
    }
    
  }

  // Funktion, um ein zufälliges Array zu generieren
  public static int[] generateRandomArray(int size, int range) {
    Random random = new Random();
    int[] array = new int[size];
    for (int i = 0; i < size; i++) {
      array[i] = random.nextInt(range);
    }
    return array;
  }

  // MergeSort-Algorithmus
  public static int[] mergeSort(int[] array) {
    if (array.length <= 1) {
      return array;
    }

    // Array in zwei Hälften teilen
    int mid = array.length / 2;
    int[] left = Arrays.copyOfRange(array, 0, mid);
    int[] right = Arrays.copyOfRange(array, mid, array.length);

    // Rekursive Sortierung der Hälften
    left = mergeSort(left);
    right = mergeSort(right);
    // Zusammenfügen der sortierten Hälften
    return merge(left, right);
  }

  // Merge-Funktion: Zwei sortierte Arrays zusammenfügen
  public static int[] merge(int[] left, int[] right) {
    int[] merged = new int[left.length + right.length];
    int i = 0, j = 0, k = 0;

    // Elemente vergleichen und in das neue Array einfügen
    while (i < left.length && j < right.length) {
      comparisons++;
      if (left[i] <= right[j]) {
        merged[k++] = left[i++];
      } else {
        merged[k++] = right[j++];
      }
      assignments++;
    }

    // Restliche Elemente hinzufügen
    while (i < left.length) {
      merged[k++] = left[i++];
      assignments++;
    }
    while (j < right.length) {
      merged[k++] = right[j++];
      assignments++;
    }
    return merged;
  }
}

Bild zum Beitrag
Java, Array, Algorithmus, Struktogramm
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.