Aktuelle Zeit: 05.07.2020 18:14

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 09:01 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Guten Morgen,
möcht gerade meine Shell-Sortierroutine umschreiben, aber tut net was ich will.
Für Bubblesort hätt ich mehrere Beispiele gefunden aber das iss zu langsam. Die hier wäre mindestens 10x so schnell, wenn's funktionieren tät.
Gleich in der 1. Zeile kommt Fehler not a function, array, list, map or macro. Das hab ich ja auch net definiert.

Code:
last = data(n(),1)
   hops = int(last / 10) + 1
   while(TRUE)
   first = hops + 1
   for count1 = first to last
         buffer1 = n(count1)
          count2 = count1 - hops
          while(TRUE)
         buffer2 = n(count2)
         if buffer1 >= buffer2 then
                count2 = count2 + hops
                break
         end if
         n(count2+hops) = buffer2
         if count2 <= hops then
                break
         end if
         count2 = count2 - hops
          wend
          n(count2) = buffer1
   next count1
   if hops = 1 then
         return
   else
         hops = int(hops / 3.5) + 1
   end if
   wend

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 09:09 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Ich hab grad keinen blassen Schimmer, was du da sortieren willst... Allerdings kann ich
dich auf die schon eingebauten Sortierfunktionen von PureBasic verweisen.

    SortArray - Sortiert ein einfaches Array
    SortList - Sortiert eine einfache Liste
    SortStructuredArray - Sortiert ein Array mit Struktur
    SortStructuredList - Sortiert eine Liste mit Struktur

_________________
PureBasic 5.72 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce RTX 2080 Super | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 09:32 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Ich hab den Fehler gefunden...
"Data" ist ein reserviertes Wort und "while/wend" muss ich umbauen weil's "wend" in Purebasic net gibt.
Danke aber auch für den Tip!
Hab es gerade mit den internen Methoden probiert, iss aber bei knapp 100000 Einträgen viel zu langsam.
Da iss der Rechner fast 2 Minuten blockiert, mit obiger Methode dauert's nur 8 Sekunden...

Schöne Grüsse
Kurt

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 11:13 
Offline

Registriert: 21.01.2008 19:11
Sommertv hat geschrieben:
Ich hab den Fehler gefunden...
"Data" ist ein reserviertes Wort und "while/wend" muss ich umbauen weil's "wend" in Purebasic net gibt.
Danke aber auch für den Tip!
...
:shock:

Lieber hier nachsehen:
https://www.purebasic.com/documentation ... _wend.html

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 11:24 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Upps, sorry... klar gibts das...
war mit Gedanken schon wieder woanders

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 14:34 
Offline

Registriert: 30.03.2011 20:53
Sommertv hat geschrieben:
Hab es gerade mit den internen Methoden probiert, iss aber bei knapp 100000 Einträgen viel zu langsam.
Da iss der Rechner fast 2 Minuten blockiert, mit obiger Methode dauert's nur 8 Sekunden...

Klingt für mich, als machst du etwas falsch. Was sortierst du denn?

100000 Einträge zu sortieren, dauert bei mir im unteren 2 Stelligen Millisekundenbereich.
(Integer ca. 9 ms, Doubles ca. 12 ms, Strings ca. 45 ms)

Bei 1000000 (1 Mio.) Einträgen liegt es erst im unteren 3 stelligen Millisekundenbereich.
(Integer ca. 110 ms, Doubles ca. 130 ms, Strings ca. 600 ms)

Mein Test-Code
Code:
OpenConsole()



#max = 100000

Dim IntFeld.i(#max)  ; Integer
Dim dblFeld.d(#max)  ; Doubles
Dim strFeld.s(#max)  ; Strings


For i = 1 To #max
   IntFeld(i) = Random(1000000)
   dblFeld(i) = IntFeld(i) / 31552
   strFeld(i) = Str(IntFeld(i))
Next i



t = ElapsedMilliseconds()
SortArray(IntFeld(), #PB_Sort_Ascending)
PrintN("Integer Sortiert in " + Str(ElapsedMilliseconds() - t) + " ms")


t = ElapsedMilliseconds()
SortArray(dblFeld(), #PB_Sort_Ascending)
PrintN("Double Sortiert in " + Str(ElapsedMilliseconds() - t) + " ms")

t = ElapsedMilliseconds()
SortArray(strFeld(), #PB_Sort_Ascending)
PrintN("String Sortiert in " + Str(ElapsedMilliseconds() - t) + " ms")
Input()


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 14:57 
Offline

Registriert: 21.01.2008 19:11
Sommertv hat geschrieben:
...
Hab es gerade mit den internen Methoden probiert, iss aber bei knapp 100000 Einträgen viel zu langsam.
Da iss der Rechner fast 2 Minuten blockiert, mit obiger Methode dauert's nur 8 Sekunden...
...

Du willst uns wohl veräppeln. :evil:
Mit der "obigen Methode" läuft es überhaupt nicht.
Im Gegensatz zu "Wend" kennt PB das "Then" nämlich nicht.
Der Code kann bei Dir nie funktioniert haben. Und die Fehlermeldung
läßt bestimmt keine 8 Sekunden auf sich warten. :lol:

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 16:26 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Jetzt kennt PB Then 8)
Code:
Macro Then
  :
EndMacro

If #True Then a = 1 : EndIf
Debug a

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sortier Algorythmus funktioniert nicht
BeitragVerfasst: 26.05.2019 17:42 
Offline

Registriert: 26.04.2019 10:31
Wohnort: Mühldorf am Inn
Da hast du schon Recht...
das Schlüsselwort Then gibts bei Purebasic nicht, ebenso Begin Bend... das iss was ich meinte.
Obiger Code stammt von einem anderen Dialekt, muss zuerst umgeschrieben werden.
Der Unterschied zwischen den beiden Basic Dialekten iss teilweise schon heftig.

Danke an alle für die Unterstützung...

_________________
Wenn einem die einfachen Dinge net einfallen, klappt's meistens umständlich...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 18 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye