Prof. Dr. R. Laue                                                                                                                                  SS00
                                Informatik II
                                Übungsblatt 1
                               


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;
}