Du befindest dich hier: FSI Informatik » user » Bjørn   (Übersicht)

Dies ist eine alte Version des Dokuments!


Bjørn

«Ein gutes Gedächtnis merkt sich nicht alles, sondern vergisst das Unwichtige» Peter Bamm

Studienfächer:

  • Künstliche Intelligenz
  • Programmiersprachen
  • Kommunikationssysteme
  • Astronomie

Programmiersprachen

Hier ein kleiner Vergleich von Quicksort in zwei Sprachen. Hierzu belauschen wir einen Dialog zwischen Einstein und Paul Valéry:

«Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher. »

«Was einfach ist, ist immer falsch. Was nicht einfach ist, ist unbrauchbar.»

C:

void quicksort(int a[], int l, int r){
	if(r>l){
		int i=l-1, j=r, tmp;
		for(;;){
			while(a[++i]<a[r]);
			while(a[--j]>a[r]);
			if(i>=j) break;
			tmp=a[i]; a[i]=a[j]; a[j]=tmp;
		}
		tmp=a[i]; a[i]=a[r]; a[r]=tmp;
 
		quicksort(a, l, i-1);
		quicksort(a, i+1, r);
	}

Prolog:

quicksort(Ls, Sorted) :- qs(Ls, Hs), flatten(Hs, Sorted).
qs([], []).
qs([A],[A]).
qs([E | Ls], [L , E , R]) :-
	(bagof(BagA, (member(BagA, Ls), BagA <= E), As); As = []),
	(bagof(BagB, (member(BagB, Ls), BagB > E), Bs) ; Bs = []),
	qs(As, L), qs(Bs, R).

Haskell:

quicksort([]) = []
quicksort(a:x) = quicksort([b | b <- x, b<=]) ++ [a] ++ quicksort([b | b<-x, b>a])