/* Algoritm BubbelSort(lista,n) * * Exempel föreläsning 000208 * */ #include #include #include void byt(int *a, int *b) { int t; /* temporär variabel */ t = *a; *a = *b; *b = t; } void bubbel(int lista[],int n) { int i,sist; int bytt; /* logisk */ sist = n-1; /* sista index i listan */ do { bytt = 0; /* logiskt false */ for (i=0;i <= sist-1; i++) { if (lista[i] > lista[i+1]) { byt(&lista[i],&lista[i+1]); /* * obs! kan även ges som adress till elementet * byt(lista+i,lista+i+1); */ bytt = 1; /* logiskt true */ } } sist = sist - 1; }while (bytt || sist==1); } /* bubbel */ int main(void) { int res[] = {14,0,4,2,-5,8,6,7,3}; int lgd = 9; int i; printf("----- Listan osorterad -----\n"); for (i=0;i <= lgd-1; i++) printf("res[%i]=%i\n",i,res[i]); bubbel(res,lgd); /*obs! fält namnet är adressen till första el. dvs &res[0]*/ printf("------- Listan sorterad --------\n"); for (i=0;i <= lgd-1; i++) printf("res[%i]=%i\n",i,res[i]); return 0; }