binäre suche und direktes einfügen

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Freeman

Betreff: binäre suche und direktes einfügen

BeitragSo, Okt 23, 2005 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group