Excel Tipps, Tricks, Test und Meinungen!


Apple-Hardware Digital-Foto Digital-Video Elektronik Notebook PC-Hardware PC-Kauftipps PC-Tuning Linux System Netzwerke Novell Windows 2000 Windows 95 Windows 98 Windows ME Windows NT Windows Vista Windows XP Access Apple-Software Backoffice CAD/CAM Corel Excel Linux Lotus PC-Grafik PC-Software Photoshop Powerpoint SQL Star-Office Word ASP C (K&R) C# -.Net C++ Delphi Dreamwaver Flash HTML/CSS Internet Java JavaScript PHP Perl Visual-Basic Webdesign XML Handy / Co. Klassik Computer PC-Allgemein Pocket-PC Sicherheit/Viren Onlinegaming PC-Games Spielekonsolen IE / Outlook NN / Mozilla Opera Fitness Gesundheit Mountainbike Car-HiFi Kfz-Allgemein Kfz-Tuning Motorrad Bücher Haustiere Heimwerken Job Musik Musikprod. Reisen Studium TV / Kino Unterhaltungselektronik
Google-Anzeigen


Hilfe zum Thema: Excel
SwirlSort - hier wirbelt's kräftig!
SwirlSort basiert auf einem ganz frühen Versuch meinerseits, einen eigenen Sortieralgorithmus zu entwickeln. Tatsächlich ist dieser Algorithmus "anders als alle anderen" und ich könnte von daher stolz auf seine Erfindung sein, wenn seine Laufzeit nicht so furchtbar schlecht wäre (die mit Abstand schlechteste von allen!).
Ich hätte ihn auch niemals der Öffentlichkeit vorgestellt, wenn er im Visualisierungsprogramm nicht so lustig aussehen würde. Die Werte werden ständig durcheinandergewirbelt (daher der Name) und trotzdem kommt irgendwann die richtige Sortierreihenfolge raus.
Wie geht er vor? Es wird ein temporäres Array aMore angelegt, welches für jedes Element aus aDaten eine Kennung speichert. Ursprünglich hatte ich die Kennungen 1 und -1 vergeben, aber dann entschied ich mich für TRUE und FALSE.
Das erste Element bekommt die Kennung TRUE, das nächste eine Kennung abhängig von seiner Größe: Ist es kleiner als das erste, FALSE, ist es größer oder gleich, TRUE. Bei den folgenden Elementen wird analog verfahren: Sie bekommen jeweils eine Kennung in Abhängigkeit von ihrer Größe und zwar immer im Vergleich zu ihrem Vorgängerelement.
Ist das Ende erreicht, werden die Daten in ein weiteres temporäres Array (aDatenTemp) geschrieben: Zuerst alle mit FALSE, daran anschließend alle mit TRUE.
Als nächstes werden die so "sortierten" Werte" zurück in aDaten geschrieben und dann beginnt das Spiel von vorn: Der erste Wert bekommt die Kennung TRUE, die folgenden FALSE oder TRUE, immer abhängig von ihrem Vorgänger.
Diese Vorgehensweise wird nun solange wiederholt, bis es keine Werte mehr gibt, die kleiner als ihr Vorgänger sind. Mit anderen Worten: Haben im Vergleichsarray aMore alle Werte die Kennung TRUE, gilt das Array aDaten als sortiert und das Programm kann beendet werden.
Der Effekt ist, dass die Werte immer wieder neu "durchgeschüttelt" werden, so dass manche von ihnen etliche Male ihren Platz tauschen müssen. So nach und nach baut sich aber (von hinten beginnend) eine sortierte Reihenfolge auf.
Das ganze ist nicht sehr effizient, aber es funktioniert tatsächlich ;-)


      
Sub SwirlSort(aDaten())
    
Dim aDatenTemp(), aMore() As Boolean
    
Dim n As Long, x As Long, y As Long
    n = UBound(aDaten)
    
ReDim aMore(1 To n)
    
ReDim aDatenTemp(1 To n)
    
Do
        aMore(1) = 
True
        
For x = 2 To n
            
If aDaten(x) >= aDaten(x - 1) Then
                aMore(x) = 
True
            
Else
                aMore(x) = 
False
            
End If
        
Next
        y = 0
        
For x = 1 To n
            
If aMore(x) = False Then
                y = y + 1
                aDatenTemp(y) = aDaten(x)
            
End If
        
Next
        
If y = 0 Then Exit Do
        
For x = 1 To n
            
If aMore(x) = True Then
                y = y + 1
                aDatenTemp(y) = aDaten(x)
            
End If
        
Next
        
For x = 1 To n
            aDaten(x) = aDatenTemp(x)
        
Next
    
Loop
End Sub 

Code eingefügt mit Syntaxhighlighter 3.0







Excel: SwirlSort - hier wirbelt's kräftig!
Google-Anzeigen
Geschickt von rlx, Do 01.05.2008 1:57

Google-Anzeigen


Warum immer zahlen? Einfach kostenlose Software downloaden:
Kostenlose
Spiele

Kostenlos spielen!
Kostenlose
Fotosoftware

Kostenlose Fotosoftware!
Kostenlose
Terminplaner

Kostenlose Terminplaner!
Kostenlose
3D Simulatoren

Kostenlose 3D-Simulatoren!
Kostenlose
PC-Tools

Kostenlose PC-Utilities!
Kostenlose
Brettspiele

Kostenlose Brettspiele!
Kostenlose
MP3 Tools

Kostenlose MP3-Tools!

Kostenlose Android Apps für Tablet PCs wie dem Galaxy Tab und Xoom
Free android tablet app downloads: Games, Security, Antivirus, Filemanager for your Tab.
Kostenlose Software-Grundausstattung für Windows-PCs Kostenlose Software-Vollausstattung für Windows-PCs
Kostenlos spielen - Spiele Downloads ohne Limits

cs
es
fr
it
no
pl
pt
tl
tr
ru

Spotlight.de distanziert sich ausdrücklich von im Forum eingestellten Fremdinhalten jeglicher Art.


Kostenlose
Antiviren-
software!
Kostenlose Antivirensoftware!


Kostenlose
Spiele!
Kostenlose Spiele!


Android
Apps für
Tablet-PCs!
Andriod Tablet Apps z. B. für Samsung Galaxy Tab


Kostenlose
3D-
Simulatoren!
Kostenlose 3D-Simulatoren!


Kostenlose
PC-Utilities!
Kostenlose PC-Utilities!


Kostenlose
Terminplaner!
Kostenlose Terminplaner!


Kostenlose
Grafik-
software!
Kostenlose Grafiksoftware!