zum Inhalt springen

Sortieren I

Links:

http://de.wikipedia.org/wiki/Sortierverfahren

http://de.wikipedia.org/wiki/Bubblesort

http://de.wikipedia.org/wiki/Insertionsort

http://de.wikipedia.org/wiki/Selectionsort

 

C++ Quellcode:

#include <iostream>
using namespace std;

// ***************************************
// Eine Klasse mit 3 Sortierverfahren
// ***************************************

class CSort
{
public:
    // ******************************
    // Konstruktor

    CSort(int *Folge, int Groesse)
    {
        A=Folge;        // zeigt auf gleichen Speicher;
        n=Groesse-1;        // Array: 0 bis! n
    }

    // ******************************
    // Sortieren durch Einfuegen

    void InsertionSort()
    {
        for(int i=0; i<=n; i++)
        {
            int key=A[i];           
            int j = i-1;           
            while((j>=0)&&(A[j]>key))
            {
                A[j+1]=A[j];       
                j--;
            }
            A[j+1]=key;
        }
    }
   
    // ******************************
    // Sortieren durch Auswahl

    void SelectionSort()
    {
        for(int i=0; i<n; i++)
        {
            int minpos=i;           
            for(int j=i+1; j<=n; j++)
                if(A[j]<A[minpos])
                    minpos=j;
            swap(A[minpos],A[i]);       
        }
    }

    // ******************************
    // Sortieren mit BubbleSort

    void BubbleSort()
    {
        for(int i=n; i>0; i--)
            for(int j=1; j<=i; j++)
                if(A[j-1] > A[j])
                    swap(A[j-1],A[j]);
    }

    // ******************************
    // Folge ausgeben

    void Drucken()
    {
        for(int i=0; i<=n; i++)
            cout << A[i] << " ";
    }

private:
    int *A, n;                                     // Zeiger auf Folge, Groesse der Folge
};

// ***************************************
// ... los geht's!
// ***************************************

int main()
{
    int Folge[]={5,2,8,1,6,4};           // irgendeine Folge
    int n=sizeof(Folge)/sizeof(int);   // Groesse n der Folge

    CSort sort(Folge, n);                   // Instanz erzeugen
    //sort.InsertionSort();               // Sortieren durch Einfuegen
    //sort.SelectionSort();               // Sortieren durch Auswahl
    sort.BubbleSort();                      // Sortieren mit BubbleSort
    sort.Drucken();                           // ausgeben

    return 0;
}