Java – die besten Beiträge

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

Warum wird JButton in Java nicht angezeigt?

Ich programmiere Gerade ein Java Projekt und bin auf das Problem gestoßen das der JButton im secountPanel nicht angezeigt wird.

Das ist mein Code:

package com.testProjekte;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class PrimzahlenRechnerMitGUI {
    static JButton backButton = new JButton("Zurück");

    public static void main(String[] args) {
        loadGUI();
    }

    public static void loadGUI() {
        JFrame mainFrame = new JFrame("Primzahl Rechner");
        mainFrame.setResizable(false);
        mainFrame.setSize(450,300);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLocationRelativeTo(null);

        JPanel mainPanel = new JPanel(new GridBagLayout());
        JPanel secountPanel = new JPanel(new GridBagLayout());
        JPanel thirtPanel = new JPanel(new GridBagLayout());

        GridBagConstraints gbc = new GridBagConstraints();
        gbc.insets = new Insets(5, 5, 5, 5);

        CardLayout cardLayout = new CardLayout();
        JPanel cardPanel = new JPanel(cardLayout);

        //main Panel Start
        JButton chooseRange = new JButton("Bereich Eingeben");
        chooseRange.setPreferredSize(new Dimension(chooseRange.getPreferredSize().width + 20, 30));
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        mainPanel.add(chooseRange, gbc);


        JButton chooseNumber = new JButton("Nummer eingeben");
        chooseNumber.setPreferredSize(new Dimension(chooseNumber.getPreferredSize().width + 20, 30));
        gbc.gridx = 1;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.EAST;
        mainPanel.add(chooseNumber, gbc);

        //main Panel end


        //secount Panel Start
        backButton.setPreferredSize(new Dimension(100, 30));
        backButton.setBackground(Color.RED);
        JLabel reangeText = new JLabel("Gib einen Bereich ein");

        JTextField startRange = new JTextField();
        startRange.setPreferredSize(new Dimension(100,30));

        JTextField endRange = new JTextField();
        endRange.setPreferredSize(new Dimension(100,30));

        JButton checkRangeButton = new JButton("Prüfen");

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.NORTHWEST;
        gbc.fill = GridBagConstraints.NONE;
        secountPanel.add(backButton, gbc);

        gbc.gridx = 0;
        gbc.gridy = 1;
        secountPanel.add(reangeText, gbc);

        gbc.gridx = 0;
        gbc.gridy = 3;
        secountPanel.add(startRange, gbc);

        gbc.gridx = 0;
        gbc.gridy = 4;
        secountPanel.add(endRange, gbc);

        gbc.gridx = 0;
        gbc.gridy = 5;
        secountPanel.add(checkRangeButton, gbc);
        //secount Panel end


        //thirt Panel start
        backButton.setPreferredSize(new Dimension(100, 30));
        backButton.setBackground(Color.RED);
        JLabel numberText = new JLabel("Gib eine Zahl ein");

        JButton checkNumberButton = new JButton("Prüfen");

        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.anchor = GridBagConstraints.WEST;
        thirtPanel.add(backButton, gbc);


        thirtPanel.add(numberText);
        thirtPanel.add(checkNumberButton);
        //thirt Panel end

        cardPanel.add(mainPanel, "MainPanel");
        cardPanel.add(secountPanel, "SecountPanel");
        cardPanel.add(thirtPanel, "ThirtPanel");

        chooseRange.addActionListener(e -> cardLayout.show(cardPanel, "SecountPanel"));
        chooseNumber.addActionListener(e -> cardLayout.show(cardPanel, "ThirtPanel"));
        backButton.addActionListener(e -> cardLayout.show(cardPanel, "MainPanel"));

        mainFrame.add(cardPanel);
        mainFrame.setVisible(true);
    }
}
App, Java, Code, Eclipse, Programmiersprache, Swing, Java Swing

Meistgelesene Beiträge zum Thema Java