Einzelnen Beitrag anzeigen
Ungelesen 10.12.10, 10:44   #1
panade
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 5
Bedankt: 9
panade ist noch neu hier! | 0 Respekt Punkte
Standard aufgabe in c -> rekursiver selectionsort

vorab mein code ist totaler gedanken mist... aber da ich 2 stunden brainfuck betrieben habe würde ich gern wissen wo der fehler ist.

aufgabe war selection sort rein rekursiv lösen.

Code:
#include 


int mini(int *feld, int size){
    int min;

    min=feld[size];

    size=size-1;
    if(size==0){
        return min;
    }
    if(min>feld[size]){
        min=feld[size];
    }
    return mini(feld, size-1);
}

void feldaus(int *feld, int size){
    int i=0;
    for(i;i<7;i++){
        printf("%d. Zahl: %d \n", i, feld[i]);
    }
}

void tausch(int *feld, int i, int j){
    int temp;
    temp=feld[i];
    feld[i]=feld[j];
    feld[j]=temp;
}

int such(int *feld, int size,int min){
    if(feld[size]==min){
        printf("stelle des minimums: %d\n", size);
        return size;
    }
    such(feld, size-1, min);
}

int sort(int *feld,int size){
    int min;
    int s;
    if(size==7){
        size--;
    }
    if(size==0){
        return 0;
    }
    min=mini(feld, size);
    s=such(feld, size, min);
    tausch(feld, s, size);
    sort(feld, size-1);
}



int main(int argc, char* arghv[])
{
    int i=0;
    int size=6;
    int min;
    int s;
    int feld[7];
    for(i;i<7; i++){
        printf("%d. Zahl eingeben: ", i);
        scanf("%d", &feld[i]);
    }
    
    sort(feld, size);
    
    feldaus(feld, size);
    
    return 0;
}
es gibt funktionen
sort-> sortieren
such-> suchen
mini -> minimum im feld finden
tausch -> tausch in dreiecksform

plan war: suche im feld das minimum setze es an das ende vom feld und wiederhole für den felddurchlauf -1 feldstelle

rekkursiv bedeutet in dem zusammenhang weitestgehend es ohne for schleifen und nur durch sich selbst aufrufende funktionen zu realisieren.

witzigster part: sort ruft funktion mini auf mini liefert das minimum sort ruft such auf um die stelle an der das minimum stand zurück zu geben <<<< war das einfachste was mir auf die schnelle einfiel da ich keine lust hatte die minimum suche doppelt rekkursiv zu machen.
panade ist offline   Mit Zitat antworten