Mindmap-Galerie Datenstruktur
Die Datenstruktur organisiert den Hauptinhalt und die logische Struktur der Grundkonzepte der Datenstruktur, hilft beim Verstehen und Merken von Wissenspunkten und eignet sich für die Prüfungsüberprüfung!
Bearbeitet um 2024-03-27 14:56:11Welche 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.
Datenstruktur
Einführung
Grundkonzepte der Datenstruktur
Daten
Datenelement, Datenelement
Fassen Sie mit Beispielen zusammen
Datenobjekte, Datenstrukturen
Datentypen, abstrakte Datentypen
Drei Elemente
logische Struktur
lineare Struktur
versammeln
Baumstruktur
Diagrammstruktur (Netzstruktur)
nichtlineare Struktur
Physische Struktur (Lagerstruktur)
sequentielle Speicherung
Kettenspeicher
Indexspeicher
Hash-Speicher
nicht sequentielle Speicherung
Datenoperationen
Algorithmus
Basiskonzept
Was ist ein Algorithmus?
Programm = Datenstruktur + Algorithmus
Datenstrukturen sind die zu verarbeitenden Informationen
Algorithmen sind Schritte zur Informationsverarbeitung
Fünf Merkmale von Algorithmen
Endlichkeit
Kann innerhalb einer begrenzten Zeit ausgeführt werden
Algorithmen sind endlich
Programme können unendlich sein
Sicherheit
Die gleiche Eingabe erzeugt nur die gleiche Ausgabe
Durchführbarkeit
Algorithmen können mithilfe bestehender Grundoperationen implementiert werden
eingeben
Daten, die zur Verarbeitung an den Algorithmus übergeben werden
Ausgabe
Das Ergebnis der Algorithmusverarbeitung
Eigenschaften eines „guten“ Algorithmus
Richtigkeit
Kann Probleme richtig lösen
Lesbarkeit
Beschreiben Sie den Algorithmus, damit andere ihn verstehen können
Robustheit
Algorithmen können mit einigen abnormalen Situationen umgehen
Hohe Effizienz und geringer Lagerbedarf
Das heißt, die Ausführung des Algorithmus spart Zeit und Speicher.
Geringe Zeitkomplexität und geringe räumliche Komplexität
Ein Maß für die Effizienz des Algorithmus
Zeitkomplexität
Wie man rechnet
① Finden Sie eine Grundoperation (die tiefste Schleife)
② Analysieren Sie die Beziehung zwischen der Anzahl der Ausführungszeiten x dieser Grundoperation und der Problemgröße n x = f (n).
③Die Größenordnung O(x) von x ist die zeitliche Komplexität des Algorithmus T(n)
Häufig verwendete Techniken
Additionsregel: O( f( n)) × O( g( n)) = O( max( f( n), g( n)))
Multiplikationsregel: O( f( n)) × O( g( n)) = O( ( f( n) × g( n)))
„Beziehen Sie sich immer auf die Reihenfolge der Macht“
Drei Komplexitätsstufen
Zeitkomplexität im schlimmsten Fall: Betrachten Sie den „schlimmsten“ Fall der Eingabedaten
Durchschnittliche Zeitkomplexität: Betrachten Sie die Situation, in der alle Eingabedaten gleich wahrscheinlich erscheinen
Beste Zeitkomplexität: Betrachten Sie den „besten Fall“ für die Eingabedaten
Raumkomplexität
Speicheraufwand
①Speichervariablen
②Rekursiver Aufruf
Wie man rechnet
Gewöhnliches Programm
①Finden Sie die Variablen, die sich auf den belegten Platz und die Größe des Problems beziehen
②Analysieren Sie die Beziehung zwischen dem belegten Raum x und der Problemgröße n x = f (n)
③Die Größenordnung O(x) von x ist die Komplexität des Algorithmusraums S(n)
rekursives Programm
① Finden Sie die Beziehung zwischen der Tiefe des rekursiven Aufrufs x und der Problemgröße n x = f(n)
②Die Größenordnung O(x) von x ist die räumliche Komplexität des Algorithmus
Hinweis: Einige Algorithmen erfordern für jede Funktionsschicht unterschiedlichen Speicherplatz und die Analysemethoden unterscheiden sich geringfügig.
Häufig verwendete Techniken
Additionsregel: Gleichzeitige Zeitkomplexität
Multiplikationsregel: Gleichzeitige Zeitkomplexität
„Beziehen Sie sich immer auf die Reihenfolge der Macht“
Kapitel eins
linearer Tisch
Definition und Grundoperationen linearer Tabellen
Definition
Eine lineare Tabelle hat eine endliche Folge von n (n>=0) Datenelementen desselben Datentyps, wobei n die Länge der Tabelle ist, wenn n=0 Eine lineare Liste ist eine leere Liste.
Befehl
Die Bitreihenfolge beginnt bei 1 und der Array-Index beginnt bei 0
Tabellenlänge, leere Tabelle
Kopf- und Fußzeilenelemente
direkter Vorgänger und direkter Nachfolger
Bis auf das erste Element hat jedes Element genau einen direkten Vorgänger; Jedes Element außer dem letzten Element hat genau einen direkten Nachfolger.
Bemerkenswerte Funktionen
Datenelemente sind vom gleichen Typ, begrenzt und geordnet
Grundoperationen
Verkäufe erstellen, hinzufügen, löschen, ändern und prüfen
Leer beurteilen, lang beurteilen, Ausgabe drucken (benutzerdefinierte Funktion)
Weitere erwähnenswerte Punkte
Verstehen Sie, wann Parameterreferenzen „&“ übergeben werden müssen
Funktionsnamen sollten lesbar sein
Sequenztabelle (sequentielle Speicherung)
Definition (Speicherstruktur)
Datenelemente, die logisch benachbart sind, sind auch physisch benachbart
Methode zur Verwirklichung
Speicher statisch zuweisen
Verwenden Sie die Implementierung „Statisches Array“, um die maximale Speicheranzahl zu definieren
Sobald die Größe festgelegt ist, kann sie nicht mehr geändert werden
Speicher dynamisch zuweisen
Unter Verwendung eines „dynamischen Arrays“ weist der in der Struktur definierte Datenzeiger Speicher dynamisch über malloc zu (es gibt einen Heap-Bereich).
L.data=(ElemType *)malloc(sizeof(ElemType)*size)
Wenn die Sequenztabelle voll ist, kann malloc verwendet werden, um die maximale Kapazität der Sequenztabelle dynamisch zu erweitern.
Es ist notwendig, die Datenelemente in einen neuen Speicherbereich zu kopieren und den ursprünglichen Bereich mit der Free-Funktion freizugeben.
Verwendete Header #include <stdlib.h>
Merkmale
Direktzugriff
Kann das i-te Element in O(1)-Zeit finden
Hohe Lagerdichte
Eine Kapazitätserweiterung ist unbequem
Das Einfügen und Löschen von Datenelementen ist umständlich
Betriebsfunktion
einfügen
Zeitkomplexität: Bestes O(1) Schlechtestes O(n) Durchschnittliches O(n)
löschen
Zeitkomplexität: Bestes O(1) Schlechtestes O(n) Durchschnittliches O(n)
Codepunkte
Der Code sollte auf den Unterschied zwischen Bitreihenfolge i und Index achten
Der Algorithmus muss robust sein und auf die Legalität von i achten
Verwendung von Anführungszeichen
Finden
Bitweise Suche
Bei dynamisch zugewiesenem Speicher beträgt die Zeitkomplexität O(1)
Nach Wert suchen
Statische Zuordnungszeitkomplexität: bestes O(1), schlechtestes O(n) durchschnittliches O(n)
Statisch und dynamisch sind dasselbe
verlinkte Liste
Kopfzeiger
Warteschlange
1. Es können Arrays und verknüpfte Listen verwendet werden
Zirkuläre verknüpfte Listen und kreisförmige Arrays
Kopf- und Endzeiger, Indizes
Kapitel Zwei