Algorithmus ----- Vollständige Anordnung

Inhaltsverzeichnis

Vorwort

Code 

 Ideen

meine anderen Blogs


Vorwort

Totalpermutation ist ein Konzept der kombinatorischen Mathematik, das alle möglichen Situationen darstellt, in denen eine Menge von Elementen in einer bestimmten Reihenfolge angeordnet ist. In der Computerprogrammierung wird Rekursion häufig verwendet, um vollständige Permutationen zu implementieren. Im Folgenden finden Sie eine detaillierte Erläuterung der Verwendung der Java-Sprache zur Implementierung einer vollständigen Permutation:

Code 

public class Permutation {

    // 交换数组中两个元素的位置
    private static void swap(char[] array, int i, int j) {
        char temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    // 递归生成全排列
    private static void generatePermutations(char[] array, int start, int end) {
        if (start == end) {
            // 当start等于end时,表示已经到达数组的末尾,此时输出当前排列
            System.out.println(new String(array));
        } else {
            // 对当前位置的元素和后面的元素进行交换,并递归调用生成全排列
            for (int i = start; i <= end; i++) {
                swap(array, start, i);
                generatePermutations(array, start + 1, end);
                // 恢复交换,确保下一次循环时数组的顺序是原始的
                swap(array, start, i);
            }
        }
    }

    // 生成全排列的入口函数
    public static void generatePermutations(String input) {
        if (input == null || input.length() == 0) {
            System.out.println("输入字符串为空!");
            return;
        }

        char[] array = input.toCharArray();
        generatePermutations(array, 0, array.length - 1);
    }

    public static void main(String[] args) {
        String input = "abc";
        generatePermutations(input);
    }
}

 Ideen

Dieser Code enthält zwei wichtige Funktionen: swap und generatePermutations. Unter ihnen:

  • swap: Wird zum Austauschen von Elementen an zwei Positionen im Array verwendet. Dies ist einer der Schlüssel zum Generieren einer vollständigen Anordnung.

  • generatePermutations: ist eine rekursive Funktion, die ein Element im Array auswählt und sich dann selbst rekursiv aufruft, um eine vollständige Anordnung der verbleibenden Elemente zu generieren. Dabei werden unterschiedliche Permutationen und Kombinationen durch den kontinuierlichen Austausch der Positionen von Elementen erreicht.

In der Funktion main können Sie eine vollständige Anordnung generieren, indem Sie die Funktion generatePermutations aufrufen und die zu arrangierende Zeichenfolge übergeben. Im Beispiel lautet die Eingabezeichenfolge „abc“. Nachdem Sie das Programm ausgeführt haben, werden auf der Konsole alle möglichen Permutationen angezeigt.

Detaillierte Erläuterung jedes Codeabschnitts

öffentliche Klassenpermutation {

    // Tauschen Sie die Positionen zweier Elemente im Array aus
    private static void swap(char[] array, int i, int j) {         char temp = array[i];         array[i] = array[j];         array[j] = temp;    




 

Die obige swap Methode wird verwendet, um die Positionen zweier Elemente im Array zu vertauschen. Dies ist der Schlüssel zur Generierung vollständiger Permutationen, da wir bei der Generierung von Permutationen ständig die Positionen von Elementen austauschen, um unterschiedliche Permutationen zu erhalten.

    // Vollständige Permutationen rekursiv generieren
    private static void genericPermutations(char[] array, int start, int end) {         if (start == end) {             // Wenn der Start gleich END ist, bedeutet dies, dass das Ende des Arrays erreicht wurde. Zu diesem Zeitpunkt ist die Ausgabe derzeit angeordnet System.out. println (Neuer String (Array)) ;         } else {             // Elemente der aktuellen Position und der nachfolgenden Elemente austauschen und rekursiv aufrufen, um eine vollständige Anordnung zu generieren for (int i = start; i & lt; = end ; i++) {                 Das Array ist bei der nächsten Schleife original.                 swap(array, start, i);             }            













 

generatePermutationsDie Methode besteht darin, den Kernteil der vollständigen Permutation rekursiv zu generieren. Es akzeptiert drei Parameter:

  • array: Stellt das zu sortierende Array dar.
  • start: Die aktuell festzulegende Startposition.
  • end: Die aktuelle Endposition, die sortiert werden soll.

Innerhalb der Methode wird zunächst geprüft, ob das Ende des Arrays erreicht wurde, also start == end. Wenn ja, bedeutet dies, dass die aktuelle Anordnung abgeschlossen ist und ausgegeben werden kann. Andernfalls wird eine Schleife verwendet, um die aktuelle Position und die Elemente dahinter zu durchlaufen, wobei die Positionen der Elemente ständig ausgetauscht werden und generatePermutations rekursiv aufgerufen wird, um die vollständige Anordnung der verbleibenden Elemente zu generieren. Um sicherzustellen, dass die Reihenfolge des Arrays beim nächsten Durchlauf der Schleife original ist, muss die Vertauschung nach dem rekursiven Aufruf wiederhergestellt werden.

    // Erzeuge eine vollständig permutierte Eintragsfunktion
    public static void genericPermutations(String input) {         if (input == null || input.length() == 0) {             System.out.println("Die Eingabezeichenfolge ist leer!");             return;



        char[] array = input.toCharArray();
        genericPermutations(array, 0, array.length - 1);
   
 

 

generatePermutationsDie Methode besteht darin, eine vollständig permutierte Eingabefunktion zu generieren. Es akzeptiert eine Zeichenfolge als Eingabe, konvertiert die Zeichenfolge in ein Zeichenarray und ruft die Methode generatePermutations auf, um mit der Generierung der vollständigen Permutation zu beginnen.

    public static void main(String[] args) {         String input = "abc";         genericPermutations(input);     }



 

In der Methode main können Sie generatePermutations aufrufen und die Zeichenfolge übergeben, die Sie sortieren möchten. In diesem Beispiel lautet die Eingabezeichenfolge „abc“. Nachdem Sie das Programm ausgeführt haben, werden auf der Konsole alle möglichen Permutationen angezeigt.

Insgesamt verwendet dieser Algorithmus Rekursion und den Austausch von Array-Elementen, um alle möglichen Permutationen von Anfang bis Ende zu generieren. Durch die ständige Änderung der Position der Elemente werden alle möglichen Anordnungen abgedeckt.

 

meine anderen Blogs

Git-Befehlssammlung: von den Grundlagen bis zu fortgeschrittenen Anwendungen – CSDN-Blog

Stellen Sie kurz einige andere Bäume im CSDN-Blog vor

Was ist Kater? Wofür wird Tomcat verwendet? -CSDN-Blog

TCP/IP-Vierschichtarchitektur-CSDN-Blog

Redis neuer Datentyp-Bitmaps-CSDN-Blog

Tencent – ​​Unzureichender Speicher bei der Installation von MySQL8.0 in Pagoda in Centos7, einem leichtgewichtigen Anwendungsserver – CSDN-BlogSynchronisierte Optimierung – CSDN-BlogTencent -Light Unzureichender Speicher bei der Installation von MySQL 8.0 in der Pagode des Massenanwendungsservers centos7 – CSDN-Blog

[Computernetzwerk] URL-Konzept und Komposition-CSDN-Blog

[Computernetzwerk] TCP-Socket-Programmierung-CSDN-Blog

Letzte Änderung des Aufzählungsklassen-CSDN-Blogs

Was ist RabbitMQ-CSDN-Blog?

Supongo que te gusta

Origin blog.csdn.net/AliceNo/article/details/135008901
Recomendado
Clasificación