binäre suche und direktes einfügen
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
FreemanBetreff: binäre suche und direktes einfügen |
So, Okt 23, 2005 15:07 Antworten mit Zitat |
|
---|---|---|
hi, ich wollte euch mal so zeigen was der Lehrplan am Gymnasium 13.Klasse in Informatik so vorsieht. *wie peinlich* . Das ganze wird ist von delphi nach Blitzmax portiert.
Code: [AUSKLAPPEN] Strict Global list:TList=CreateList() Type array Field a:Int[11] Field Pos:Int=-1 Field links:Int Field rechts:Int Field mitte:Int Field suche:Int Method array_fuellen() Local e:array=New array Local b:Int For b=1 To 10 e.a[b]=Rand(1,100) Next list.AddLast(e) End Method Method direktes_einfuegen(maximal:Int) Local i,j,merke:Int For i=0+1 To maximal For Local e:array=EachIn list merke=e.a[i] j=i-1 While (merke<e.a[j]) and (j>=1) e.a[j+1]=e.a[j] j:-1 Wend e.a[j+1]=merke Next Next End Method Method binaere_suche(wert:Int,maximal:Int) Local mitte,links,rechts,suche,w:Int For Local b:array=EachIn list b.links=1 b.rechts=maximal b.mitte=(b.links+b.rechts)/2 b.suche=1 list.AddLast(b) Next Repeat For Local e:array=EachIn list e.mitte=(e.links+e.rechts)/2 If e.a[e.mitte]=wert Then e.suche=2 Else If e.a[e.mitte] <wert Then e.links=e.mitte+1 If e.a[e.mitte] >wert Then e.rechts=e.mitte-1 EndIf mitte=e.mitte links=e.links rechts=e.rechts suche=e.suche w=e.a[e.mitte] Next Until (suche=2) or (links >rechts) If suche=2 Then Print "position :"+mitte Else Print "leider nicht gefunden" EndIf End Method Method ausgabe(maximal:Int) Local b:Int For Local e:array=EachIn list For b=1 To maximal Print e.a[b] Next Exit Next End Method End Type Global e:array=New array e.array_fuellen e.direktes_einfuegen(10) e.binaere_suche(59,10) e.ausgabe(10) vielleicht kann es ja einer gebrauchen, auch wenn man einiges ,eigentlich alles, per function machen kann Fr3eMaN |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
Übersicht BlitzMax, BlitzMax NG Codearchiv & Module
Powered by phpBB © 2001 - 2006, phpBB Group