In der Programmierung ist der Algorithmus eine Menge von rundum charakterisierten Richtungen in Anordnung, um das Problem anzugehen.

Merkmale eines anständigen Algorithmus

Information und Ertrag sollten eindeutig charakterisiert werden.

Jede Progression in der Berechnung sollte klar und unmissverständlich sein.

Algorithmus sollte der beste unter einer Vielzahl von Ansätzen sein, um ein Problem zu lösen.

Ein Algorithmus sollte keinen PC-Code haben. Vielmehr sollte die Berechnung so geschrieben sein, dass sie tendenziell in vergleichbaren Programmierdialekten verwendet wird.

Beispiele für Algorithmen in der Programmierung

Schreiben Sie einen Algorithmus, um zwei vom Benutzer eingegebene Zahlen zu addieren.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen num1, num2 und Summe.

Schritt 3: Lesen Sie die Werte num1 und num2.

Schritt 4: Addieren Sie num1 und num2 und weisen Sie das Ergebnis der Summe zu.

        sum←num1+num2

Schritt 5: Summe anzeigen

Schritt 6: Stopp

Schreiben Sie einen Algorithmus, um die größte unter drei verschiedenen, vom Benutzer eingegebenen Zahlen zu finden.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen a,b und c.

Schritt 3: Lesen der Variablen a,b und c.

Schritt 4: Wenn a>b

           Wenn a>c

              Anzeige a ist die größte Zahl.

           Sonst

              Anzeige c ist die größte Zahl.

        Sonst

           Wenn b>c

              Anzeige b ist die größte Zahl.

           Sonst

              Anzeige c ist die größte Zahl. 

Schritt 5: Stopp

Schreiben Sie einen Algorithmus, um alle Wurzeln einer quadratischen Gleichung ax2+bx+c=0 zu finden.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen a, b, c, D, x1, x2, rp und ip;

Schritt 3: Berechnen Sie die Diskriminante

         D←b2-4ac

Schritt 4: Wenn D≥0

              r1←(-b+√D)/2a

              r2←(-b-√D)/2a

              Zeigen Sie r1 und r2 als Wurzeln an.

        Sonst    

              Berechnen von Realteil und Imaginärteil

              rp←b/2a

              ip←√(-D)/2a

              rp+j(ip) und rp-j(ip) als Wurzeln anzeigen

Schreiben Sie einen Algorithmus, um die Fakultät einer vom Benutzer eingegebenen Zahl zu finden.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen n,Fakultät und i.

Schritt 3: Variablen initialisieren

          factorial←1

          i←1

Schritt 4: Lesen Sie den Wert von n

Schritt 5: Wiederholen Sie die Schritte, bis i=n

     5.1: factorial←factorial*i

     5.2: i←i+1

Schritt 6: Fakultät anzeigen

Schritt 7: Stopp

Schreiben Sie einen Algorithmus, um zu prüfen, ob eine vom Benutzer eingegebene Zahl prim ist oder nicht.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen n,i,flag.

Schritt 3: Variablen initialisieren

        flag←1

        i←2 

Schritt 4: Lesen Sie n vom Benutzer.

Schritt 5: Wiederholen Sie die Schritte, bis i<(n/2)

     5.1 Wenn der Rest von n÷i gleich 0 ist

            flag←0

            Weiter zu Schritt 6

     5.2 i←i+1

Schritt 6: Wenn Flag=0

           Anzeige n ist nicht primär

        sonst

           Anzeige n ist Primzahl

Schritt 7: Stopp

Schreiben Sie einen Algorithmus zum Auffinden der Fibonacci-Reihe bis term≤1000.

Schritt 1: Start

Schritt 2: Deklarieren Sie die Variablen first_term,second_term und temp.

Schritt 3: Zuerst die Variablen initialisieren_term←0 zweitens_term←1

Schritt 4: Ersten_Begriff und zweiten_Begriff anzeigen

Schritt 5: Wiederholen Sie die Schritte bis zum zweiten_term≤1000

     5.1: temp←second_begriff

     5.2: zweite_term←second_Begriff+erste Amtszeit

     5.3: erste_term←temp

     5.4: Zweiten_Begriff anzeigen

Schritt 6: Stopp

Warum jeder Programmierer lernen sollte, Algorithmen zu optimieren

Was sind Algorithmen?

Beiläufig ist eine Berechnung nur ein Hinweis auf die Schritte, die zur Lösung eines Problems unternommen werden müssen. Sie sind im Grunde eine Antwort.

Zum Beispiel kann eine Berechnung, die sich um die Frage der Fakultäten kümmert, in etwa so aussehen:

Problem: Finden Sie die Fakultät von n

Fakt initialisieren = 1

Für jeden Wert v im Bereich 1 bis n:

    Multiplizieren Sie den Fakt mit v

Fakt enthält die Fakultät von n

Hier ist der Algorithmus auf Englisch geschrieben. Wenn er in einer Programmiersprache geschrieben wäre, würden wir ihn stattdessen Code nennen. Hier ist ein Code zum Finden der Fakultät einer Zahl in C++.

int faktoriell(int n) {

    int fact = 1;

    für (int v = 1; v <= n; v++) {

        Tatsache = Tatsache * n;

    }

    Rückkehr Tatsache;

}

Bei der Programmierung geht es um Informationsstrukturen und Berechnungen. Informationsstrukturen werden verwendet, um Informationen zu speichern, während Berechnungen verwendet werden, um das Problem unter Verwendung dieser Informationen anzugehen.

Informationsstrukturen und Berechnungen (DSA) erfährt Antworten auf Standardfragen im Detail und gibt Ihnen ein Wissen darüber, dass es so produktiv ist, jede einzelne davon zu nutzen. Es zeigt Ihnen ebenfalls die Studie zur Beurteilung der Produktivität einer Berechnung. Dies befähigt Sie, aus verschiedenen Entscheidungen die beste auszuwählen.

Die Verwendung von Datenstrukturen und Algorithmen macht Ihren Code skalierbar

Zeit ist wertvoll.

Nehmen wir an, Alice und Bob versuchen, sich um eine grundlegende Frage zu kümmern, nämlich die Summe der ursprünglichen 1011 normalen Zahlen zu finden. Während Bob die Berechnung zusammenstellte, aktualisierte Alice sie, indem sie zeigte, dass sie ebenso grundlegend ist wie die Verurteilung von Donald Trump.

Algorithmus (von Bob)

Summe initialisieren = 0

für jede natürliche Zahl n im Bereich von 1 bis 1011 (einschließlich):

    n zur Summe addieren

Summe ist Ihre Antwort

Code (von Alice)

int findSum() {

int Summe = 0;

für (int v = 1; <= 100000000000; v++) {

Summe += v;

}

Rückgabesumme;

}

Alice und Bob sind von sich selbst euphorisiert, dass sie in Sekundenschnelle etwas Eigenes fabrizieren könnten. Wie wäre es, wenn wir uns in ihren Arbeitsbereich schleichen und uns auf ihre Diskussion einstimmen?

Alice: Lassen wir diesen Code laufen und entdecken wir das Ganze.

Schwanken: Ich habe diesen Code vor wenigen Augenblicken überprüft, aber er zeigt immer noch nicht die Ausbeute an. Was hat es damit auf sich?

Oh nein, etwas ist schlecht ausgegangen! Ein PC ist die deterministischste Maschine. Zurückzukehren und zu versuchen, ihn erneut laufen zu lassen, wird nicht helfen. Wir sollten also analysieren, was mit diesem einfachen Code los ist.

Zwei der wichtigsten Vorzüge eines PC-Programms sind Zeit und Speicher.

Die Zeit, die der PC benötigt, um einen Code auszuführen, ist

Zeit zur Ausführung des Codes = Anzahl der Befehle * Zeit zur Ausführung jedes Befehls

Die Anzahl der Richtungen hängt von dem von Ihnen verwendeten Code ab, und die zur Ausführung jedes Codes benötigte Zeit hängt von Ihrer Maschine und Ihrem Compiler ab.

Für diese Situation wird die vollständige Anzahl der ausgeführten Richtlinien (angenommen x) x = 1 + (1011 + 1) + (1011) + 1 sein, was x = 2 * 1011 + 3 ist.

Geben Sie uns die Chance zu akzeptieren, dass ein PC y = 108 Richtlinien in einer einzigen Sekunde ausführen kann (er kann je nach Maschinenanordnung schwanken). Die für die Ausführung des obigen Codes benötigte Zeit beträgt

Für die Ausführung des Codes wird Zeit benötigt = x/y (beachtenswerter als 16 Minuten)

Ist es denkbar, die Berechnung mit dem Ziel zu verbessern, dass Alice und Bob nicht jedes Mal, wenn sie diesen Code ausführen, 16 Minuten lang warten müssen?

Ich bin sicher, dass Sie zuvor über die richtige Technik spekuliert haben. Die Gesamtheit der ersten N Merkmalnummern ist durch das Rezept gegeben:

Ganzheit = N * (N + 1)/2

Wenn man sie in Code umwandelt, sieht das in etwa so aus:

int sum(int N) {

Rückkehr N * (N + 1)/2;

}

Dieser Code wird in nur einer Anleitung ausgeführt und schließt den Auftrag unabhängig von seinem Wert ab. Geben Sie ihm die Chance, bemerkenswerter zu sein als die der Menschheit bekannte Gesamtzahl von Partikeln. Er wird das Ergebnis im Handumdrehen entdecken.

In diesem Fall ist die Gesamtzahl der ausgeführten Anweisungen (sagen wir x) x = 1 + (1011 + 1) + (1011) + 1, was x = 2 * 1011 + 3 ist

Nehmen wir an, dass ein Computer y = 108 ausführen kann

Geben Sie uns die Chance zu akzeptieren, dass ein PC y = 108 Richtlinien in einer einzigen Sekunde ausführen kann (er kann je nach Maschineneinrichtung schwanken). Die für die Ausführung des obigen Codes benötigte Zeit ist:

Zeitaufwand für die Ausführung des Codes = x/y (beachtenswerter als 16 Minuten)

Ist es denkbar, die Berechnung mit dem Ziel zu verbessern, dass Alice und Bob nicht jedes Mal, wenn sie diesen Code ausführen, 16 Minuten lang warten müssen?

Ich bin sicher, dass Sie zuvor über die richtige Technik spekuliert haben. Die Gesamtheit der ersten N normalen Zahlen ist durch die Gleichung gegeben:

Ganz = N * (N + 1)/2

Wenn man sie in Code umwandelt, sieht das in etwa so aus:

int sum(int N) {

Rückkehr N * (N + 1)/2;

}

Dieser Code wird in nur einer Anleitung ausgeführt und schließt den Auftrag unabhängig von seinem Wert ab. Geben Sie ihm die Chance, sich stärker hervorzutun als die der Menschheit bekannte Anzahl von Molekülen. Er wird das Ergebnis in wenigen Augenblicken entdecken.

Die Zeit, die in dieser Situation benötigt wird, um das Problem anzugehen, beträgt 1/y (das sind 10 Nanosekunden). Zufälligerweise dauert die Kombinationsreaktion einer Atombombe 40-50 ns, was bedeutet, dass Ihr Programm effektiv beendet wird, unabhängig davon, ob jemand eine Atombombe auf Ihren PC wirft, während Sie Ihren Code ausgeführt haben 🙂

Hinweis: Computer benötigen einige Richtlinien (nicht 1), um Augmentation und Division abzubilden. Ich habe 1 nur der Einfachheit halber gesagt.