suche UNSORT Algo
Übersicht

![]() |
4pacBetreff: suche UNSORT Algo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi liebe Coderz,
ich brauche gerade im Job einen Algorithmus, der quasi genau das Gegenteil macht von einem Sort, nämlich einen Array gründlich durcheinandermischen. Wäre auch interessant, das für einen Type zu haben, der quasi das hier Code: [AUSKLAPPEN] While Not Eof(filein)
in$=ReadLine$(filein) If in$<>"" s.sort=New sort s\single_word$=Lower$(in$) EndIf Wend umgekehrt macht. Naja, genau umgekehrt ist es ja nicht, er soll halt nur das Gegenteil einer Sortierung zur Wirkung haben - ausgegangen davon, daß (filein) eine sortierte Liste beinhaltet, die durcheinandergemischt werden soll. Kann mir jemand was Gescheihtes dazu posten? Danke & Grüße, Thomas |
||
![]() |
DCSieger des B2D Retro Wettbewerb / Aug 04 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Etwas vermischen also?
Nunja.. ich würde ganz einfach jedem Type Eintrag / Array über Rand eine Zufallszahl zuteilen und dann nach dieser Zahl sortieren. ![]() |
||
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com | www.CarnageContest.com | www.Stranded3.com |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global ArrayGroesse = xx ;wieviele Elemente hat das Array
Dim deinArray(ArrayGroesse) ;dein Array welches zu Unsortieren ist Dim HilfsArray (ArrayGroesse+1) ; ein Hilfsarray, kann nach benutzung mit dim(0) verkleinert werden SeedRnd (MilliSecs()) ;Unsort- da Arraynamen nicht als Funktionsparameter übergeben werden können ; muss in DeinArray das zu sortierende Feld sein. Ergebnis ebenfalls in DeinArray For zaehler = 0 To ArrayGroesse If hilfsarray(zaehler)=0 Then .starter neuePosition= Rand(0,ArrayGroesse) If HilfsArray(neuePosition) = 0 Then HilfsArray(zaehler)=1 HilfsArray(neueposition)=1 Hilfsarray(ArrayGroesse+1)=DeinArray(Zaehler) Deinarray(Zaehler)=DeinArray(neuePosition) DeinArray(neuePosition)=hilfsArray(ArrayGroesse+1) Else Goto starter End If End If Next Achtung: kann Grade bei grösseren Arrays seeeeehr langsam werden, da neue Werte per Zufall bestimmt werden... Und: nur aus dem kopf geschrieben, hab noch keinen richtigen Funktionstest gemacht... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
4pac |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ BladeRunner - Das sieht schön kurz aus und zumindest auf den ersten Blick logisch. Ich danke Dir. Ich werde das mal austesten. Um genau so eine kurze griffige Lösung ging es mir, ich gehe davon aus das sowas schon in optimierter Form existiert (ähnlich wie die gängigsten Sort-Algorithmen), und wollte deshalb vermeiden, die Lösung in 50 bis 100 Zeilen selbst zusammenzudilletieren.
Viele Grüße, Thomas |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm types sind nicht so gut zum sortieren oder mischen... Dim ist da besser und bequemer | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Blatolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Const array_groesse=50 ;arraygröße festlegen
Dim array(array_groesse) ;array dimensionieren For i=0 To array_groesse ;jedes array element durchgehen hilfsint=array(i) ;wert zwischenspeichern zufallszahl=Rand(array_groesse) ;element mit dem getauscht werden soll per zufall bestimmen array(i)=array(zufallszahl) ;array element auf den wert des zufälligen elementes setzen array(zufallszahl)=hilfsint ;zufälliges element mit gespeicherten wert gleich setzen Next Die Kommentare sollten alles erklären. Im Grunde werden einfach immer 2 Werte vertauscht was im endeffekt zu einem chaos führt. |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unter folgendem Link findest du viele Algorithmen. Einfach mal Strg+F und "mischen" nutzen und schlaulesen ![]() http://www.imn.htwk-leipzig.de...nhalt.html |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
hier eine Function zum Mischen von Types benötigt keine zusätzliche Variable im TypefeldCode: [AUSKLAPPEN] Function UN_sort_Type()
For Namen.Namen = Each Namen: gs = gs+1:Next bs = 1 Repeat Namen.Namen = Last Namen Insert Namen Before First Namen X = 1 bs = bs + 1 XX = Rand (0,bs) For z =0 To XX If bs = x Then Exit Namen.Namen = After (Namen) X = X + 1 Insert Namen Before Before Namen Namen.Namen = After (Namen) Next Until gs = bs End Function |
||
[BB2D | BB3D | BB+]
|
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group