C++-Implementierung der Auswahlsortierung

beschreiben

Selection Sort ist ein einfacher und intuitiver Sortieralgorithmus. Seine Grundidee besteht darin, in jeder Runde das kleinste (oder größte) Element aus den zu sortierenden Daten auszuwählen und dann die Positionen mit dem ersten Element der zu sortierenden Daten auszutauschen. Wiederholen Sie diesen Vorgang für die verbleibenden unsortierten Daten, bis alle Daten sortiert sind.

Umsetzungsideen

  1. Durchlaufen Sie das Array und ermitteln Sie den Index des kleinsten Elements.
  2. Tauschen Sie das kleinste Element mit dem Element an der aktuellen Durchlaufposition aus.

Illustration

Bild.png

Zeitkomplexität

Die zeitliche Komplexität der Auswahlsortierung beträgt O(n^2), wobei n die Länge des zu sortierenden Arrays ist.

Raumkomplexität

Die Raumkomplexität der Auswahlsortierung beträgt O(1) und erfordert nur Hilfsraum auf konstantem Niveau.

Beispielcode

#include <iostream>

void selectionSort(int arr[], int n) {
    
    
    for (int i = 0; i < n - 1; i++) {
    
    
        int minIndex = i;
        for (int j = i + 1; j < n; j++) {
    
    
            if (arr[j] < arr[minIndex]) {
    
    
                minIndex = j;
            }
        }

        // 最小元素与当前元素交换
        int temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
        std::cout << "sort : " << i+1 << "  :";
        for(int k = 0; k < n-1; ++k)
        {
    
    
            std::cout << arr[k] << "\t";
        }
        std::cout << std::endl;
    }
}

int main() {
    
    
    int arr[] = {
    
    9, 1, 2, 5, 7, 4, 8, 6, 3, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    std::cout << "sort Before:" << std::endl;
    selectionSort(arr, n);

    std::cout << "sort End: \n";
    for (int i = 0; i < n; i++) {
    
    
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Ergebnis:
Bild.png

Vorsichtsmaßnahmen

  • Die Auswahlsortierung ist ein instabiler Sortieralgorithmus, d. h. die relative Reihenfolge derselben Elemente kann sich ändern.
  • Die Auswahlsortierung weist eine schlechte Leistung auf und eignet sich nicht zum Sortieren großer Datenmengen.
  • In praktischen Anwendungen kann die Leistung der Auswahlsortierung durch Optimierungsalgorithmen verbessert werden, z. B. durch Aufzeichnen der Position des kleinsten Elements und anschließenden direkten Austausch.
  • Es sind mehrere Austauschvorgänge erforderlich. Im Vergleich zu anderen Sortieralgorithmen erfordert die Auswahlsortierung mehr Austauschvorgänge.

abschließend

不管脚步有多慢都不要紧,只要你在走,总会看到进步

Supongo que te gusta

Origin blog.csdn.net/MrHHHHHH/article/details/135210659
Recomendado
Clasificación