ein Kapitel zurück                                           ein Kapitel weiter

Unser erster Sortieralgorithmus ist "Selection Sort". Dieser Algorithmus sucht als erstes das kleinste Element in der Liste und tauscht es gegen das Element am Anfang aus. Als nächstes wird das Zweitkleinste Element in der Liste gesucht und dies wird gegen das an zweiter Stelle Platziertem Element in der Liste ausgetauscht usw.

Auf diese Weise haben die Elemente auf der linken Seite eine feste Position und werden nicht mehr geändert. Hier das ganze bildlich....




Ich denke mal dazu muss man nicht mehr viel sagen. Nun benötigen wir noch den Quellcode für die Praxis....

/*Download:select.c*/

#include <stdio.h>

void selection(int array[], int elemente)
{
 int i,j,mini,temp;

 for(i=0; i<elemente; i++)
  {
    mini=i;
    for(j=i+1; j<=elemente; j++)
     {
      if(array[j] < array[mini])
        mini=j;
     }
    temp=array[mini];
    array[mini]=array[i];
    array[i]=temp;
  }
}


int main()
{
 int i;
 /*Unser Array zum sortieren*/
 int test_array[] = { 5, 2, 7, 9, 1, 4, 3, 8, 6 };
 int N = sizeof(test_array)/sizeof(int);

 selection(test_array, N-1);

 for(i=0; i<N; i++)
   printf("%d ",test_array[i]);
 printf("\n");

 return 0;
}

Natürlich können sie mit Selection Sort auch andersherum sortieren. Also vom Größten Element abwärts. In diesem Fall brauchen sie nur die if-Abfrage umändern zu..........

if(array[j] > array[mini])  

Der Vorteil an Selection Sort liegt daran, dass jedes Element höchstens nur einmal bewegt wird.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf