Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int istKleinerNachNummer(students_t *stud1, students_t *stud2){
- return stud2->matrikelNummer-stud1->matrikelNummer;
- }
- int istGroesserNachNummer(students_t *stud1, students_t *stud2){
- return stud1->matrikelNummer-stud2->matrikelNummer;
- }
- int istKleinerNachName(students_t *stud1, students_t *stud2){
- return strcmp(stud2->name, stud1->name);
- }
- int istGroesserNachName(students_t *stud1, students_t *stud2){
- return strcmp(stud1->name, stud2->name);
- }
- //SORTIEREN (REKURSIV)
- void quicksortNameAb(students_t *studierende[], int left, int right){
- if (left < right){
- int i = left;
- int j = right;
- char *vgl = studierende[(i+j)/2]->name;
- do{
- while (strcmp(studierende[i]->name, vgl) > 0){
- i = i+1;
- }
- while (strcmp(studierende[j]->name, vgl) < 0){
- j = j-1;
- }
- if (i<=j){
- students_t *temp = studierende[i];
- studierende[i] = studierende[j];
- studierende[j] = temp;
- i= i+1;
- j= j-1;
- }
- }while (i < j);
- quicksortNameAb(studierende, left, j);
- quicksortNameAb(studierende, i, right);
- }
- }
- //s.o. Pointer
- void quicksortFktPtr (students_t *studierende[], int (*vergleichsFunktion)
- (students_t *, students_t *), int left, int right){
- if (left < right){
- int i = left;
- int j = right;
- students_t *vgl = studierende[(i+j)/2];
- do{
- while (vergleichsFunktion(studierende[i], vgl) > 0){
- i=i+1;
- }
- while (vergleichsFunktion(studierende[j], vgl) < 0){
- j=j-1;
- }
- if(i<=j){
- students_t *temp = studierende[i];
- studierende[i] = studierende[j];
- studierende[j] = temp;
- i = i+1;
- j = j-1;
- }
- }while (i<j);
- quicksortFktPtr(studierende, vergleichsFunktion, left, j);
- quicksortFktPtr(studierende, vergleichsFunktion, i, right);
- }
- }
- //SORTIEREN
- void sortiereAbsteigendNachName(students_t *studierende[], int anzahl){
- if (anzahl > 1){
- int left = 0;
- int right = anzahl - 1;
- printf("Sortiert nach Name, absteigend\n");
- quicksortNameAb(studierende, left, right);
- studierendeAusgeben(studierende, anzahl);
- printf("Sortiert nach Name, aufsteigend\n");
- quicksortFktPtr(studierende, istKleinerNachName, left, right);
- studierendeAusgeben(studierende, anzahl);
- printf("sortiert nach Name, absteigend\n");
- quicksortFktPtr(studierende, istGroesserNachName, left, right);
- studierendeAusgeben(studierende, anzahl);
- printf("sortiert nach Nummer, aufsteigend\n");
- quicksortFktPtr(studierende, istKleinerNachNummer, left, right);
- studierendeAusgeben(studierende, anzahl);
- printf("sortiert nach Nummer, absteigend\n");
- quicksortFktPtr(studierende, istGroesserNachNummer, left, right);
- studierendeAusgeben(studierende, anzahl);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement