So verwenden Sie den Einfügungssortierungsalgorithmus in C++
Verwenden Sie den Einfügungssortierungsalgorithmus in C++, um die Array-Sortierung zu implementieren.
Einfügungssortierung ist ein einfacher, aber effektiver Sortieralgorithmus, der die zu sortierenden Elemente einzeln in die sortierte Liste einfügt und schließlich eine geordnete Liste erhält. In diesem Artikel wird erläutert, wie die Programmiersprache C++ zum Implementieren des Einfügungssortierungsalgorithmus verwendet wird, und es werden spezifische Codebeispiele gegeben.
Algorithmusidee:
Die Grundidee der Einfügungssortierung besteht darin, das Array in sortierte Intervalle und unsortierte Intervalle zu unterteilen. Jedes Mal wird ein Element aus dem unsortierten Bereich ausgewählt und an der entsprechenden Position des sortierten Bereichs eingefügt, bis der unsortierte Bereich leer ist.
Spezifische Schritte:
- Durchlaufen Sie das Array und fügen Sie die Elemente des unsortierten Intervalls nacheinander in das sortierte Intervall ein.
- Vergleichen Sie jedes Element im unsortierten Bereich mit den Elementen im sortierten Bereich, um die Einfügeposition zu ermitteln.
- Fügen Sie das Element an der entsprechenden Position des sortierten Intervalls ein und verschieben Sie die Elemente des sortierten Intervalls eine Position nach hinten.
Codebeispiel:
Das Folgende ist ein Beispielcode, der die Programmiersprache C++ verwendet, um den Einfügungssortierungsalgorithmus zu implementieren:
#include <iostream> void insertionSort(int arr[], int n) { for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } int main() { int arr[] = { 5, 2, 4, 6, 1, 3 }; int n = sizeof(arr) / sizeof(arr[0]); std::cout << "原始数组:"; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; insertionSort(arr, n); std::cout << "排序后的数组:"; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; }
Im obigen Code definieren wir eine Funktion namens insertionSort
的函数来实现插入排序。在main
函数中,我们定义了一个待排序的数组并调用insertionSort
zum Sortieren. Abschließend geben wir die sortierten Ergebnisse an die Konsole aus.
Ausführungsergebnisse:
Ursprüngliches Array: 5 2 4 6 1 3
Sortiertes Array: 1 2 3 4 5 6
Zusammenfassung:
Durch den obigen Beispielcode können wir sehen, wie der Einfügungssortierungsalgorithmus in C++ zum Sortieren verwendet wird das Array. Obwohl die Einfügungssortierung einfach ist, beträgt ihre zeitliche Komplexität O(n^2) und ihre Sortiereffizienz für große Datenmengen ist gering. Wenn in praktischen Anwendungen eine große Datenmenge sortiert werden muss, empfiehlt es sich, einen effizienteren Sortieralgorithmus zu verwenden, z. B. Schnellsortierung oder Zusammenführungssortierung.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Einfügungssortierungsalgorithmus in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

C++-Objektlayout und Speicherausrichtung optimieren die Effizienz der Speichernutzung: Objektlayout: Datenelemente werden in der Reihenfolge der Deklaration gespeichert, wodurch die Speicherplatznutzung optimiert wird. Speicherausrichtung: Daten werden im Speicher ausgerichtet, um die Zugriffsgeschwindigkeit zu verbessern. Das Schlüsselwort alignas gibt eine benutzerdefinierte Ausrichtung an, z. B. eine 64-Byte-ausgerichtete CacheLine-Struktur, um die Effizienz des Cache-Zeilenzugriffs zu verbessern.

01Ausblicksübersicht Derzeit ist es schwierig, ein angemessenes Gleichgewicht zwischen Detektionseffizienz und Detektionsergebnissen zu erreichen. Wir haben einen verbesserten YOLOv5-Algorithmus zur Zielerkennung in hochauflösenden optischen Fernerkundungsbildern entwickelt, der mehrschichtige Merkmalspyramiden, Multierkennungskopfstrategien und hybride Aufmerksamkeitsmodule verwendet, um die Wirkung des Zielerkennungsnetzwerks in optischen Fernerkundungsbildern zu verbessern. Laut SIMD-Datensatz ist der mAP des neuen Algorithmus 2,2 % besser als YOLOv5 und 8,48 % besser als YOLOX, wodurch ein besseres Gleichgewicht zwischen Erkennungsergebnissen und Geschwindigkeit erreicht wird. 02 Hintergrund und Motivation Mit der rasanten Entwicklung der Fernerkundungstechnologie wurden hochauflösende optische Fernerkundungsbilder verwendet, um viele Objekte auf der Erdoberfläche zu beschreiben, darunter Flugzeuge, Autos, Gebäude usw. Objekterkennung bei der Interpretation von Fernerkundungsbildern

Die Schritte zum Implementieren des Strategiemusters in C++ lauten wie folgt: Definieren Sie die Strategieschnittstelle und deklarieren Sie die Methoden, die ausgeführt werden müssen. Erstellen Sie spezifische Strategieklassen, implementieren Sie jeweils die Schnittstelle und stellen Sie verschiedene Algorithmen bereit. Verwenden Sie eine Kontextklasse, um einen Verweis auf eine konkrete Strategieklasse zu speichern und Operationen darüber auszuführen.

Golang und C++ sind Garbage-Collected- bzw. manuelle Speicherverwaltungs-Programmiersprachen mit unterschiedlicher Syntax und Typsystemen. Golang implementiert die gleichzeitige Programmierung über Goroutine und C++ implementiert sie über Threads. Die Golang-Speicherverwaltung ist einfach und C++ bietet eine höhere Leistung. In der Praxis ist Golang-Code prägnanter und C++ bietet offensichtliche Leistungsvorteile.

Intelligente C++-Zeiger implementieren eine automatische Speicherverwaltung durch Zeigerzählung, Destruktoren und virtuelle Funktionstabellen. Der Zeigerzähler verfolgt die Anzahl der Referenzen, und wenn die Anzahl der Referenzen auf 0 sinkt, gibt der Destruktor den ursprünglichen Zeiger frei. Virtuelle Funktionstabellen ermöglichen Polymorphismus und ermöglichen die Implementierung spezifischer Verhaltensweisen für verschiedene Arten von Smart Pointern.

Die Behandlung verschachtelter Ausnahmen wird in C++ durch verschachtelte Try-Catch-Blöcke implementiert, sodass neue Ausnahmen innerhalb des Ausnahmehandlers ausgelöst werden können. Die verschachtelten Try-Catch-Schritte lauten wie folgt: 1. Der äußere Try-Catch-Block behandelt alle Ausnahmen, einschließlich der vom inneren Ausnahmehandler ausgelösten. 2. Der innere Try-Catch-Block behandelt bestimmte Arten von Ausnahmen, und wenn eine Ausnahme außerhalb des Gültigkeitsbereichs auftritt, wird die Kontrolle an den externen Ausnahmehandler übergeben.

Zählen klingt einfach, ist aber in der Praxis sehr schwierig. Stellen Sie sich vor, Sie werden in einen unberührten Regenwald transportiert, um eine Wildtierzählung durchzuführen. Wenn Sie ein Tier sehen, machen Sie ein Foto. Digitalkameras zeichnen nur die Gesamtzahl der verfolgten Tiere auf, Sie interessieren sich jedoch für die Anzahl der einzelnen Tiere, es gibt jedoch keine Statistiken. Wie erhält man also am besten Zugang zu dieser einzigartigen Tierpopulation? An diesem Punkt müssen Sie sagen: Beginnen Sie jetzt mit dem Zählen und vergleichen Sie schließlich jede neue Art vom Foto mit der Liste. Für Informationsmengen bis zu mehreren Milliarden Einträgen ist diese gängige Zählmethode jedoch teilweise nicht geeignet. Informatiker des Indian Statistical Institute (UNL) und der National University of Singapore haben einen neuen Algorithmus vorgeschlagen – CVM. Es kann die Berechnung verschiedener Elemente in einer langen Liste annähern.

Um über einen STL-Container zu iterieren, können Sie die Funktionen begin() und end() des Containers verwenden, um den Iteratorbereich abzurufen: Vektor: Verwenden Sie eine for-Schleife, um über den Iteratorbereich zu iterieren. Verknüpfte Liste: Verwenden Sie die Memberfunktion next(), um die Elemente der verknüpften Liste zu durchlaufen. Zuordnung: Holen Sie sich den Schlüsselwert-Iterator und verwenden Sie eine for-Schleife, um ihn zu durchlaufen.
