Lösung Aufgabe 1 (5 Programmierpunkte - Abgabe per email)
#include <stdlib.h> int feld[] = {3,4,6,3,8,9,3,4,6,8}; int feld2[] = {3,4,6,3,8,9,3,4,6,8}; main() { int i; my_sort_system(feld2, sizeof(feld2)/sizeof(int) ); for (i=0; i<sizeof(feld2)/sizeof(int); i++) printf("%d ",feld2[i]); printf("\n"); my_sort_000000(feld, sizeof(feld)/sizeof(int) ); for (i=0; i<sizeof(feld)/sizeof(int); i++) printf("%d ",feld[i]); printf("\n"); } my_comp(const void *a, const void *b) /* rückgabe 0 bei gleichheit <0 wenn a kleiner b >0 sonst */ { return *(int *)a - *(int *)b; } my_sort_system(int *feld, int feld_laenge) { qsort(feld,feld_laenge, sizeof(int), my_comp); } my_sort_000000(int *feld, int feld_laenge) { int i,j,temp; for (i=0;i<feld_laenge;i++) for (j=i+1;j<feld_laenge;j++) if (feld[i] > feld[j]) // tauschen { temp=feld[i];feld[i]= feld[j];feld[j]=temp;} }
Lösung Aufgabe 2 (5 Programmierpunkte - Abgabe per email)
#include <stdlib.h> #define nicht_da -1 //int feld[] = {2,5,6,7,9,11,14,29}; int feld[] = {2,5}; main() { int ergebnis, suchwert; scanf("%d",&suchwert); ergebnis = my_bsearch_system(feld, sizeof(feld)/sizeof(int) , suchwert); if (ergebnis == nicht_da) printf("nicht gefunden \n"); else printf("%d gefunden \n",ergebnis); ergebnis = my_bsearch_000000(feld, sizeof(feld)/sizeof(int) , suchwert); if (ergebnis == nicht_da) printf("nicht gefunden \n"); else printf("%d gefunden \n",ergebnis); } my_bsearch_000000(int *feld, int size, int suchwert) { if (size == 0) return nicht_da; if(feld[size/2] == suchwert) return feld[size/2]; else if (feld[size/2] < suchwert) return my_bsearch_000000( &feld[size/2 +1], size - size/2 -1, suchwert); else return my_bsearch_000000( feld, size/2, suchwert); } int my_comp(const void *a, const void *b) { return *(int *)a - *(int *)b; } my_bsearch_system(int *feld, int size, int suchwert) { int *ergebnis; ergebnis = bsearch(&suchwert,feld,size, sizeof(int), my_comp); if (ergebnis == NULL) return -1; else return *ergebnis; }