Sortieralgorithmen
Übersicht

![]() |
EingeproggtBetreff: Sortieralgorithmen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dank überwältigender Hilfe eurerseits (hier: https://www.blitzforum.de/foru...hp?t=23116) kann ich nach nur 3 Tagen Entwicklungszeit meine nicht Laufzeitoptimierte, nur für Types ausgelegte Sortierfunktion
InsertSort vorstellen. EDIT: Jetzt zigmal schneller! Hatte einen Denkfehler drin, dass er jeden Schleifendurchlauf unnötig oft gemacht hat. BlitzBasic: [AUSKLAPPEN]
Achja, der Titel ist in der Mehrzahl, weil ich hoffe, dass viele weitere folgen. EDIT 9.1.2010: Code Tags in BB-Code-Tags geändert. |
||
- Zuletzt bearbeitet von Eingeproggt am Sa, Jan 09, 2010 16:07, insgesamt einmal bearbeitet
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann will ich mal anschließen mit 2 Algo´s
einmal Insert und einmal Quicksort nur für Types Der folgende Code beinhaltet gleich eine Speedmessung! Code: [AUSKLAPPEN] Graphics 800,200,16,2
Für den Quicksort habe ich extra ein Pgrammgeschrieben, mit dem der SourceCode erstellt wird.
Type TY Field x End Type ;Vorgabe Anzzahl = 5000 Seedrandom=MilliSecs() ZahlStart=1 ZahlEnde = 500000 ;testet die Speed von (Insert Sortieren Mit For Next) NeueErstellen(Anzzahl,Seedrandom,ZahlStart,ZahlEnde ) time = MilliSecs (): InsertSortierenMitForNext() :Time = MilliSecs () - time Print Time + " Millisekunden InsertSortierenMitForNext()" ;testet die Speed von (Quicksort()) NeueErstellen(Anzzahl,Seedrandom,ZahlStart,ZahlEnde ) time = MilliSecs (): Quicksort_Start() :Time = MilliSecs () - time Print Time + " Millisekunden Quicksort()" WaitKey Function NeueErstellen(Anz,zufall,von,bis ) SeedRnd(zufall) Delete Each TY For i= 1 To Anz t.TY= New TY t\x = Rand(von,bis) Next End Function Function InsertSortierenMitForNext(); 5_1_2007 For a.Ty = Each TY z.TY = After a.TY If z.TY <> Null Then If z\x < a\x For z1.TY = Each TY If z\x < z1\x Then Insert z Before z1 a.TY=Before a.TY Exit End If Next End If End If Next End Function Function Quicksort_Start() a.TY= First TY b.TY = Last TY If a.TY = Null Return If a <> b Then Quicksort(a.TY,b.TY) End Function Function Quicksort(a.TY,b.TY) s2.Ty = A.TY s3.TY = A.TY Repeat s1.TY=After s2.TY If s1\x< a\x Then If s1 = b.TY Then b.Ty=Before s1 GoOut = 1 Else s2= Before s1 End If Insert S1.TY Before a.TY If s3.TY = A.Ty Then s3.ty=s1.TY Else If s1.TY= b.Ty Then Exit s2.TY = s1 End If Until goout If s3.Ty <> a.TY s1 = Before a.TY If s1<> s3 Then Quicksort(s3.TY,s1.TY) End If If a.Ty <> b.TY s1 = After a.TY If s1 <> b Then Quicksort(s1.TY,b.TY) End If End Function Einfach Typename und Field angeben nach dem sortiert werden soll, der Code wird in die Zwischenablage kopiert. Download |
||
![]() |
KabelbinderSieger des WM-Contest 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fehlt noch Mergesort ![]() |
||
<Wing Avenger Download> ◊◊◊ <Macrophage Download> |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group