Mindmap-Galerie Datenstruktur C-Sprachversion
Einführung in Kapitel 1 der 2. Auflage der Data Structure C Language Edition, das den Forschungsinhalt der 1.1-Datenstruktur vorstellt. 1.2 Grundkonzepte und Terminologie von Datenstrukturen, 1.3 Darstellung und Implementierung abstrakter Datentypen usw.
Bearbeitet um 2024-04-21 17:36:01Welche Preismethoden gibt es für Projektunteraufträge im Rahmen des EPC-Generalvertragsmodells? EPC (Engineering, Procurement, Construction) bedeutet, dass der Generalunternehmer für den gesamten Prozess der Planung, Beschaffung, Konstruktion und Installation des Projekts verantwortlich ist und für die Testbetriebsdienste verantwortlich ist.
Die Wissenspunkte, die Java-Ingenieure in jeder Phase beherrschen müssen, werden ausführlich vorgestellt und das Wissen ist umfassend. Ich hoffe, es kann für alle hilfreich sein.
Das Software-Anforderungs-Engineering ist ein Schlüsselkapitel für Systemanalytiker. Zu den Kapiteln „Anforderungserhebung“ und „Anforderungsanalyse“ gehören häufig Veröffentlichungen.
Welche Preismethoden gibt es für Projektunteraufträge im Rahmen des EPC-Generalvertragsmodells? EPC (Engineering, Procurement, Construction) bedeutet, dass der Generalunternehmer für den gesamten Prozess der Planung, Beschaffung, Konstruktion und Installation des Projekts verantwortlich ist und für die Testbetriebsdienste verantwortlich ist.
Die Wissenspunkte, die Java-Ingenieure in jeder Phase beherrschen müssen, werden ausführlich vorgestellt und das Wissen ist umfassend. Ich hoffe, es kann für alle hilfreich sein.
Das Software-Anforderungs-Engineering ist ein Schlüsselkapitel für Systemanalytiker. Zu den Kapiteln „Anforderungserhebung“ und „Anforderungsanalyse“ gehören häufig Veröffentlichungen.
Einführung
1.1 Forschungsinhalt der Datenstruktur
Datenstruktur ist ein Kernfach zwischen Mathematik, Computerhardware und -software
System zur Verwaltung des Studentenstatus: lineare Eins-zu-eins-Beziehung
Mensch-Computer-Schachproblem: Eins-zu-viele-Baumstruktur
Problem des kürzesten Weges: Viele-zu-viele-Netzstruktur
1.2 Grundkonzepte und Terminologie von Datenstrukturen
1.2.1 Daten, Datenelemente, Datenelemente und Datenobjekte
Daten sind eine symbolische Darstellung objektiver Dinge. Es ist ein allgemeiner Begriff für alle Symbole, die in einen Computer eingegeben und von einem Computerprogramm verarbeitet werden können.
Datenelement ist die Grundeinheit von Daten und wird in Computern normalerweise als Ganzes betrachtet und verarbeitet.
Datenelement ist die kleinste unteilbare Einheit, die ein Datenelement darstellt und eine unabhängige Bedeutung hat.
Datenobjekt ist eine Sammlung von Datenelementen mit denselben Eigenschaften und eine Teilmenge von Daten.
1.2.2 Datenstruktur
logische Struktur
Struktur festlegen Es gibt keine andere Beziehung zwischen Datenelementen als die Beziehung „zur gleichen Sammlung gehören“.
lineare Struktur Zwischen Datenelementen besteht eine Eins-zu-Eins-Beziehung
Baumstruktur Zwischen Datenelementen besteht eine Eins-zu-viele-Beziehung
Graphenstruktur oder Netzstruktur Zwischen Datenelementen besteht eine Viele-zu-Viele-Beziehung
Speicherstruktur
Sequentielle Speicherstruktur
Kettenspeicherstruktur
1.2.3 Datentypen und abstrakte Datentypen
Ein Datentyp ist eine Sammlung von Werten und eine Reihe von Operationen, die für diese Wertemenge definiert sind.
Der abstrakte Datentyp (ADT) bezieht sich im Allgemeinen auf ein vom Benutzer definiertes mathematisches Modell zur Darstellung eines Anwendungsproblems und den allgemeinen Namen einer Reihe von Operationen, die in diesem Modell definiert sind. Es umfasst insbesondere drei Teile: Datenobjekte und Beziehungen zu Datenobjekten. Eine Sammlung von Datenobjekten und eine Sammlung grundlegender Operationen für Datenobjekte.
1.3 Darstellung und Implementierung abstrakter Datentypen
(1) Vorgegebene Konstanten und Typen (2) Die Darstellung der Datenstruktur (Speicherstruktur) wird durch eine Typdefinition (typedef) beschrieben. Als Datenelementtyp wird ElemType vereinbart, der vom Benutzer bei Verwendung dieser Daten definiert wird Typ. (3) Die grundlegenden Betriebsalgorithmen werden durch Funktionen im folgenden Format beschrieben. (4) Dynamische Zuweisung und Freigabe von Speicher. (5) Zuweisungsanweisung (6) Auswahlanweisung (7) Schleifenanweisung (8) Endanweisung (9) Eingabe- und Ausgabeanweisungen verwenden C + Streaming-Eingabe- und Ausgabeform (10) Grundfunktionen
1.4 Algorithmen und Algorithmenanalyse
1.4.1 Definition und Eigenschaften des Algorithmus
(1) Endlich. Ein Algorithmus muss immer nach der Ausführung einer endlichen Anzahl von Schritten enden, und jeder Schritt muss in endlicher Zeit abgeschlossen sein.
(2) Gewissheit. Die jeweils auszuführenden Operationen sind im Algorithmus klar spezifiziert, und es besteht keine Unklarheit. Der Ausführende oder Leser des Algorithmus kann seine Bedeutung und die Art und Weise, wie er ausgeführt wird, klar verstehen.
(3) Machbarkeit. Alle Operationen im Algorithmus können implementiert werden, indem die bereits implementierten Grundoperationen endlich oft ausgeführt werden.
(4) Eingabe. Ein Algorithmus hat 0 oder mehr Eingaben. Bei der Beschreibung eines Algorithmus als Funktion wird die Eingabe häufig durch formale Parameter dargestellt, deren Werte beim Aufruf von der aufrufenden Funktion erhalten werden.
(5) Ausgabe. Ein Algorithmus hat eine oder mehrere Ausgaben, die das Ergebnis der Informationsverarbeitung durch den Algorithmus sind. Ein Algorithmus ohne Ausgabe hat keine Bedeutung. Bei der Verwendung von Funktionen zur Beschreibung von Algorithmen wird die Ausgabe häufig durch Rückgabewerte oder formale Parameter von Referenztypen dargestellt.
1.4.2 Grundlegende Kriterien zur Bewertung der Qualität von Algorithmen
(1) Korrektheit. Bei sinnvoller Dateneingabe können innerhalb einer begrenzten Laufzeit korrekte Ergebnisse erzielt werden.
(2) Lesbarkeit. Ein guter Algorithmus sollte erstens für Menschen leicht zu verstehen und miteinander zu kommunizieren sein und zweitens sollte er maschinenausführbar sein. Lesbare Algorithmen helfen Menschen, den Algorithmus zu verstehen, während schwer verständliche Algorithmen dazu neigen, Fehler zu verbergen und schwer zu debuggen und zu ändern sind.
(3) Robustheit. Wenn die Eingabedaten illegal sind, kann ein guter Algorithmus angemessen reagieren oder sie entsprechend verarbeiten, ohne unerklärliche Ausgabeergebnisse zu erzeugen.
(4) Effizienz. Effizienz umfasst sowohl zeitliche als auch räumliche Aspekte. Zeiteffizienz bedeutet, dass der Algorithmus angemessen gestaltet ist und eine hohe Ausführungseffizienz aufweist, die an der Zeitkomplexität gemessen werden kann. Raumeffizienz bedeutet, dass die vom Algorithmus belegte Speicherkapazität angemessen ist und an der Raumkomplexität gemessen werden kann. Zeitkomplexität und räumliche Komplexität sind die beiden Hauptindikatoren für Messalgorithmen.
1.4.3 Zeitkomplexität des Algorithmus
1. Fragengröße und Aussagehäufigkeit
Die Häufigkeit, mit der eine Anweisung wiederholt ausgeführt wird, wird als Anweisungshäufigkeit bezeichnet.
Die Problemgröße ist die Menge an Eingaben, die der Algorithmus zur Lösung des Problems benötigt. Sie ist die wesentliche Darstellung der Größe des Problems und wird im Allgemeinen durch eine ganze Zahl n dargestellt.
2. Zeitkomplexitätsdefinition des Algorithmus
Im Allgemeinen ist die Anzahl der wiederholten Ausführungen der Grundanweisungen im Algorithmus eine Funktion An) der Problemgröße n, und die Zeitmessung des Algorithmus wird wie folgt aufgezeichnet: Die Frequenz ist T(n)=O((n)) FrequenzA Dies bedeutet, dass mit zunehmender Problemgröße n die Wachstumsrate der Algorithmusausführungszeit mit der Wachstumsrate von (n) übereinstimmt, was als asymptotische Zeitkomplexität des Algorithmus oder kurz Zeitkomplexität bezeichnet wird.
3. Beispiele für die Zeitkomplexitätsanalyse von Algorithmen
[Beispiel 1.5] Beispiel einer konstanten Ordnung. [x ;s=0;) Beide Sätze haben eine Häufigkeit von 1
[Beispiel 1.6] Beispiel für eine lineare Ordnung. for(i=0;i<n;i )(x ;s=0;) halten Die Häufigkeit der beiden Grundanweisungen im Schleifenkörper beträgt A (n) = n, sodass die zeitliche Komplexität des Algorithmus T (n) = O (n) beträgt, was als lineare Reihenfolge bezeichnet wird.
[Beispiel 1.7] Beispiel für eine quadratische Reihenfolge. Berechnung (1) x=0;y=0; (2) for(k=1;k<=n;k) N) (3) X; (4) for(i=1;i<=n;i) (5) for(j=1;j<=n;j ) (6) y; Bei Schleifenanweisungen müssen wir nur die Anzahl der Ausführungen der Anweisungen im Schleifenkörper berücksichtigen. Die häufigste Anweisung im obigen Programmsegment ist (6) und ihre Häufigkeit beträgt f(n)=n2, also die Zeitkomplexität des Algorithmus ist T(n)=O(n2), genannt quadratische Ordnung.
4. Beste, schlechteste und durchschnittliche Zeitkomplexität
Die Zeitkomplexität eines Algorithmus wird im besten Fall als beste Zeitkomplexität bezeichnet, was sich auf die minimal mögliche Rechenmenge des Algorithmus bezieht. Die Zeitkomplexität des Algorithmus wird im schlechtesten Fall als schlechteste Zeitkomplexität bezeichnet Algorithmus Der maximal mögliche Rechenaufwand; die durchschnittliche Zeitkomplexität eines Algorithmus bezieht sich auf den gewichteten Durchschnitt des Rechenaufwands des Algorithmus, wenn die Eingabeinstanzen unter allen möglichen Umständen mit gleicher Wahrscheinlichkeit auftreten.
1.4.4 Raumkomplexität des Algorithmus
In Bezug auf den Speicherplatzbedarf des Algorithmus verwenden wir ähnlich wie die Zeitkomplexität des Algorithmus die asymptotische Raumkomplexität (Raumkomplexität) als Maß für den vom Algorithmus benötigten Speicherplatz, der als Raumkomplexität bezeichnet wird Es ist auch eine Funktion der Problemgröße n, bezeichnet als: einer von Basic S(n)=O(f(n))