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.
-