Hier mal ein paar typischen Sortieralgorithmus implementiert in c#, wer Fehler findet oder verbesserungs Vorschläge hat, nur her damit!
Quicksort:
public void QuicksortAlgo(ref int[] a, int l, int r)//a=Array, l=linker Rand, r=rechter Rand { if(r>l) { //solange mehr als 1 Folgenelement existiert int i=l-1, j=r, tmp; //Variableninitialisierung mit Folgenrändern for(;;){ //Endlosschleife; bricht ab, wenn i>=j while(a[++i]<a[r]); //inkrem., bis größeres Element gefunden wird while(a[--j]>a[r] && j>i); //dekrem., bis kleineres Element gefunden wird if(i>=j) break; //brich ab, wenn sich die Folgenzeiger treffen tmp=a; a[i]=a[j]; a[j]=tmp;//tausche kleineres mit größerem Element } tmp=a[i]; a[i]=a[r]; a[r]=tmp; //tausche Trennelement
QuicksortAlgo(ref a, l, i-1); //rekursiver Aufruf für linke Teilfolge QuicksortAlgo( ref a, i+1, r); //rekursiver Aufruf für rechte Teilfolge } } |