stabilität von sortieralgorithmen



  • wie ist der ansatz wenn ich zeigen will ob ein sortieralgorithmus stabil ist oder nicht?



  • ich hätte da ein Beispiel aus meinem Programm als Funktion mit ausführlicher beschreibung ^^:

    void insert_sort_lagerverwaltung(long art_nr, char art_tit[], int anz_art)
    {
    struct lagerverwaltung *lager_ptr1, *lager_ptr2;

    /* Zuerst wird überprüft, ob sich überhaupt ein Element
    in der Liste befindet. Falls nicht, rufen Sie die
    Funktion insert_lagerverwaltung() mit dem Argumenten
    art_nr , art_tit, anz_art auf */
    if(first == NULL)
    insert_lagerverwaltung(art_nr, art_tit, anz_art);
    else
    {
    /*Als nächstes wird nach dem Element gesucht,das
    größer als das neue Element ist und fügen es an
    der entsprechenden Stellen ein */
    lager_ptr1 = first;
    /* Hier durchlaufen Sie die Liste so lange, bis Sie ein
    Element finden, das größer ist als art_nr oder Sie
    am Ende der Liste angekommen sind und somit die
    Funktion insert_lagerverwaltung() aufrufen */
    while( (lager_ptr1 != NULL) && (art_nr > lager_ptr1->artikelnummer) )
    /* solange nicht am Ende angekommen UND einzufügender
    Artikel ist größer als der aktuelle /
    lager_ptr1 = lager_ptr1->next;
    if(lager_ptr1 == NULL)
    insert_lagerverwaltung(art_nr, art_tit, anz_art); /
    Hinten anhängen */
    else if(lager_ptr1 == first)
    {
    first = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
    first->artikelnummer = art_nr;
    strcpy(first->artikelbezeichnung, art_tit);
    first->anzahl_artikel = anz_art;
    first->next = lager_ptr1;
    }
    else
    {
    /* Hier postitionieren Sie den zweiten Zeiger
    nun ein Position vor dem ersten */

    lager_ptr2 = first;
    while(lager_ptr2->next != lager_ptr1)
    lager_ptr2 = lager_ptr2->next;
    lager_ptr1 = (struct lagerverwaltung *)malloc(sizeof(struct lagerverwaltung));
    lager_ptr1->artikelnummer = art_nr;
    strcpy(lager_ptr1->artikelbezeichnung, art_tit);
    lager_ptr1->anzahl_artikel = anz_art;

    lager_ptr1->next = lager_ptr2->next;
    lager_ptr2->next = lager_ptr1;
    }
    }
    }



  • Zu zeigen, dass gleiche Keys in der selbe Reihenfolge bleiben, wie sie geben waren.




Anmelden zum Antworten