amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Sortieren [ - Search - New posts - Register - Login - ]

-1- 2 [ - Post reply - ]

2004-01-26, 22:08 h

Ralf27
Posts: 2779
User
Ich weiß, es ist schon fast Grundwissen für Progger, aber wie kann ich am besten ein Zahlenfeld sortieren? Die einfache Methode ist ja bekannt, ich brauch aber eine etwas effektivere, sprich schnellere Methode.

Könnte mir da jemand auf die Sprünge helfen?

Danke im vorraus. :-)
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-27, 01:34 h

Holger
Posts: 8116
User
http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/quick/quick.htm

http://www.iti.fh-flensburg.de/lang/algorithmen/sortieren/heap/heap.htm



mfg
--


[ Dieser Beitrag wurde von Holger am 27.01.2004 editiert. ]

[ - Answer - Quote - Direct link - ]

2004-01-27, 08:05 h

Solar
Posts: 3680
User
- was für ein Zahlenfeld (Dimensionen)?
- wieviele Elemente?
- was für eine Datenstruktur?
- in welcher Programmiersprache?
- oder handelt es sich um eine Datei, die Du sortieren willst?

Üblicherweise wird es Dir schwerfallen, die Sortieralgorithmen einer Standardbibliothek zu übertreffen. Hast Du die Standardfunktionen ausprobiert? Wie waren die Ergebnisse? Wie gut müßten die Ergebnisse sein, um Dich zufriedenzustellen?

[ - Answer - Quote - Direct link - ]

2004-01-27, 09:40 h

hannibal
Posts: 201
User
nim Quick sort wenn du wenig speicher hast, wenn etwas ram ueber ist (jede zahl solte 2 mal gespeichert werden koennen) dann nim Heap oder Mergesort, wesentlich besser als Quick sort, beschreibung der Algorithmen findest du im netz, versuch immer den algorithmus von Donald Knuth zu benutzen.

[ - Answer - Quote - Direct link - ]

2004-01-27, 10:30 h

Solar
Posts: 3680
User
Zitat:
Original von h4nnib4l:
...dann nim Heap oder Mergesort, wesentlich besser als Quick sort...


*Mööööp*, verkehrt.

Auszugsweise aus Holgers Links:

"Im Gegensatz zu Mergesort benötigt Heapsort keinen zusätzlichen Speicherplatz."

"Gegenüber Quicksort ist Heapsort im Durchschnitt langsamer."

Also: Mergesort braucht den zusätzlichen Speicherplatz, und Mergesort ist besser als Quicksort.

Aber nu der Clou: Wenn Du glaubst, hinter der Standard-Lib-Funktion "qsort()" verbirgt sich ein "simpler" Quicksort, bist Du schief gewickelt. Und die sort-Funktion aus der C++ Standard Template Library schlägt den C-qsort() nochmals um einen erheblichen Faktor.

Daher meine Warnung, solange Du nicht nachgewiesen hast, das die Funktionen der Standardbibliothek in Deinem speziellen Fall nicht taugen, laß' die Finger von Eigenimplementierungen.

[ - Answer - Quote - Direct link - ]

2004-01-27, 12:17 h

Mad_Dog
Posts: 1944
User
Am besten, Du schaust mal unter Google nach:

http://www.google.de/search?q=%22Sortieralgorithmen%22&ie=ISO-8859-1&hl=de&btnG=Google+Suche&meta=lr%3Dlang_de



Wenn Du Deinem Bücherregal was Gutes tun möchtest, kann ich Dir nur "Algorithmen in C" wärmstens empfehlen.

http://www.amazon.de/exec/obidos/ASIN/3893193766/qid=1075201848/sr=2-1/ref=sr_aps_prod_1_1/302-1279184-5501666



Welcher Sortieralgorithmus für Dich der beste ist, hängt davon ab, welche Daten Du verarbeiten möchtest, wie viele es sind, und ob Du eventuell mehrere Datensätze beim Sortieren mischen möchtest usw. .

Eventuell sind auch die Sourcecodes, die Du auf meiner Homepage unter "Downloads" finden kannst für Dich hilfreich.

--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 27.01.2004 editiert. ]

[ - Answer - Quote - Direct link - ]

2004-01-27, 12:25 h

chkamiga
Posts:
[Former member]
Unter was Programmierst du? Für Basic habe ich einen
Schnellen Sortiercode. Der Sortiert aber Strings, das
kann man aber ändern.
--
http://people.freenet.de/CHRAmiga.de

CHRKUM@web.de

[ - Edit - Answer - Quote - Direct link - ]

2004-01-27, 12:49 h

Solar
Posts: 3680
User
Hört mich denn keiner? Warum zum Geier ist jeder nur so geil darauf, sich einen Sortieralgorithmus selbst zu stricken?

Mensch, jede Sprache (von ASM vielleicht mal abgesehen) hat ihre Sortierfunktion. Mit ein klein wenig Glück ist die von einem Profi implementiert, der mit Sicherheit nicht irgendeinen Algorithmus hergenommen hat weil er einen schönen Namen hat, sondern weil er sich echte Gedanken zum Thema gemacht hat.

Warum glaubt jeder, das eh besser zu können?

[ - Answer - Quote - Direct link - ]

2004-01-27, 13:05 h

hannibal
Posts: 201
User
hoert auf Solar...

das einziege was man selber tuen sollte ist, wenn man grosse objete sortiren willl, nicht immer die objecte anzufassen sonder zeiger auf die objecte zu vertauschen...

[ - Answer - Quote - Direct link - ]

2004-01-27, 15:18 h

thomas
Posts: 7718
User

Also ich habe bisher immer c.lib/qsort() benutzt und bin noch nie in Performance-Schwierigkeiten gekommen, sodaß ich am Sortieralgorithmus hätte optimieren müssen.

In Arexx habe ich meistens einen einfachen Bubble-Sort programmiert, weil es da keine Standardfunktion gibt.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ - Answer - Quote - Direct link - ]

2004-01-27, 18:48 h

Holger
Posts: 8116
User
Zitat:
Original von thomas:
In Arexx habe ich meistens einen einfachen Bubble-Sort programmiert, weil es da keine Standardfunktion gibt.

...und ARexx mit jedem Algorithmus langsam ist :D

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2004-01-27, 19:41 h

Ralf27
Posts: 2779
User
Zitat:
Original von chkamiga:
Unter was Programmierst du? Für Basic habe ich einen
Schnellen Sortiercode. Der Sortiert aber Strings, das
kann man aber ändern.
--
http://people.freenet.de/CHRAmiga.de


CHRKUM@web.de


Das Programm dafür hab ich jetzt in MaxonBasic geschrieben und der Sortiercode hab ich auch schon etwas optimiert, aber ich denke mir mal das es auch noch schneller gehn kann, da ich mich eigentlich noch nie richtig mit Sortierroutinen beschäftigt habe.

Könntest Du mir bitte die Routine zukommen lassen?

Es soll übrigens einfach nur ein Zahlenfeld ( feld(x) ) sortiert werden. Die kleinste und die größte Zahl im Feld ist auch am Anfang bekannt.
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-27, 19:46 h

Ralf27
Posts: 2779
User
Leider kann ich kein C, bzw. kann es nur etwas lesen und das auch nicht gerade gut. Ich programmiere nur zum Spaß (was es eigentlich immer machen sollte) in AmigaBasic bzw. in MaxonBasic und wenn es schnell sein soll in ASM (was ich auch nicht so gut kann, aber kleine Routinen kann ich damit auch schreiben).

Allerdings würde ich das ganze gerne in MaxonBasic realisieren.

Gibt es eigentlich eine Lib-routine für sowas?

PS: c.lib hab ich nicht mit Basic. :-)
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-27, 19:49 h

Ralf27
Posts: 2779
User
Zitat:
Original von Solar:
- was für ein Zahlenfeld (Dimensionen)?


Einfache Dimension, Zahlenfeld.

Zitat:
- wieviele Elemente?

n-Elemente.

Zitat:
- was für eine Datenstruktur?

Eine ganz einfache: feld(x) (übrigens alles in Integer)

Zitat:
- in welcher Programmiersprache?

Vorzugsweise in MaxonBasic.

Zitat:
- oder handelt es sich um eine Datei, die Du sortieren willst?

Nein, ein einfaches Datenfeld.

Zitat:
Üblicherweise wird es Dir schwerfallen, die Sortieralgorithmen einer Standardbibliothek zu übertreffen. Hast Du die Standardfunktionen ausprobiert? Wie waren die Ergebnisse? Wie gut müßten die Ergebnisse sein, um Dich zufriedenzustellen?

Nein, habe ich nicht versucht, weil ich keine kenne. Das ganze müßte halt für Maxonbasic (oder Amigabasic) verwendbar sein. Z.b. als Library.
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-27, 21:01 h

Mad_Dog
Posts: 1944
User
Also zu Solar's Einwänden:

Da Ralf27 ja in Basic programmiert... ich kenne keinen Basic-Dialekt, indem irgendwelche Sortieralgorithmen eingabaut sind.

@Ralf27:

Wenn Du mit C nicht klarkommst, dann schau Dir doch mal meine Beispiele in Ada95 an. Ada95 ist von der Syntax her ähnlich wie Pascal oder Modula.


--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-01-27, 21:12 h

Solar
Posts: 3680
User
Basic ist allerdings ein Problem... (in jeglichem Wortsinn ;-) )

[ - Answer - Quote - Direct link - ]

2004-01-27, 21:51 h

Ralf27
Posts: 2779
User
Zitat:
Original von Solar:
Basic ist allerdings ein Problem... (in jeglichem Wortsinn ;-) )


Wo ist denn da das Problem, wenn ich mal so dumm fragen soll? Zu schwierig für Dich? :-) ( *gäg* )

Spaß beiseite: MaxonBasic ist schon recht flott. Leider aber auch etwas fehlerhaft (kann man umgehn) und wird leider seit Jahren(Jahrzehnt?) nicht mehr weiterentwickelt wie z.b. BlitzBasic. Allerdings sehe ich BlitzBasic weniger als Basic an, sondern mehr als C. ;-)

--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-27, 21:53 h

Ralf27
Posts: 2779
User
Zitat:
Original von Mad_Dog:
Also zu Solar's Einwänden:

Da Ralf27 ja in Basic programmiert... ich kenne keinen Basic-Dialekt, indem irgendwelche Sortieralgorithmen eingabaut sind.

@Ralf27:

Wenn Du mit C nicht klarkommst, dann schau Dir doch mal meine Beispiele in Ada95 an. Ada95 ist von der Syntax her ähnlich wie Pascal oder Modula.


--

http://www.norman-interactive.com


Ich hab schon ganz am Anfang des Threads eine passende URL bekommen wo die Sortroutinen erklärt sind, sodas ich diese Nachprogrammieren kann.

Wenn ich ehrlich bin dann komme ich wohl mit C besser klar als mit Ada95, das ich ehrlichgetippt noch nie gesehn habe. Pascal oder Modula verstehe ich ähnlich gut wie C, wenn ich das hier mal so tippen kann, obwohl ich mehr mit C zu tun hat in Sachen Quellcode ansehn. Vielleicht versteh ich C in einigen Jahrzehnten ja... :-)


--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-28, 02:17 h

dante
Posts: 111
User
Ralf27, ich hab damals auch nur Asm und Blitz programmiert, aber davon fiel mir der Umstieg auf C doch erstaunlich leicht. Versuchs, es lohnt sich :)
Bzgl. Sortieralgos frag ich mich allerdings, ob es wirklich keine blitzlib gibt, die einen qsort beinhaltet. Erstaunlich...:shock2:
Wenn du es selber nicht hinbekommen solltest, kann ich ja mal versuchsweise einen qsort in Blitz eintipp0rn. Aber versuch du es erstmal selber. Und wenn du es hinkriegst, gleich als Source posten. :O

[ - Answer - Quote - Direct link - ]

2004-01-28, 07:30 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von dante:
Ralf27, ich hab damals auch nur Asm und Blitz programmiert, aber davon fiel mir der Umstieg auf C doch erstaunlich leicht. Versuchs, es lohnt sich :)


So ist es. Viele oldschool Basic Programmierer scheuen leider vor C/C++. Dabei ist C nicht wirklich schwerer zu erlernen, wie Basic. Es kann eben viel mehr und es stehen auch aktuelle Linker Libs / Header zur Verfügung. Sicher wird ein Anfänger nicht gleich alle Features von C/C++ nutzen können, aber mit der Zeit kommt man rein. Zudem gibt's über C/C++ viele gute Bücher.

Für Einsteiger empfehle ich hier das Buch "C++ - Der leichte Einstieg" von Peter Wollschlaeger. Die 9.95 EUR sind sicher keine Fehlinvestition, wenn man mal reinschnuppern möchte.




--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-01-28, 09:14 h

Solar
Posts: 3680
User
Bestätige. Ich habe seinerzeit auch mit Basic angefangen (ZX80, C64 "Basic 2.0", C128 "Basic 7.0"), mir dann irgendwann auf dem Amiga ARexx angetan und lange Zeit nichts von C und Konsorten wissen wollen. "Zu kryptisch, Basic ist einfacher."

Aber mit C/C++/Java/Perl und all den anderen "func() { }"-Sprachen geht einem eine ganz neue Welt auf...

[ - Answer - Quote - Direct link - ]

2004-01-28, 10:28 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Solar:

Aber mit C/C++/Java/Perl und all den anderen "func() { }"-Sprachen geht einem eine ganz neue Welt auf...


Nun ja... moderne Basic-Dialekte unterstützen funktionale Programmierung auch recht gut. Die Tage von GOTO und GOSUB sind auch hier längst gezählt.

Aber versuch mal in Basic z.B. Heapsort zu implementieren -> viel Spaß! Einen Baum kann man zwar auch als Array darstellen, aber besonders toll ist das nicht.

Und da Ralf27 ja schreibt, daß er einen Sortieralgorithmus für n Elemente haben möchte, ist man mit einer Programmiersprache, die Pointer unterstützt wesentlich besser beraten.



--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 28.01.2004 editiert. ]

[ - Answer - Quote - Direct link - ]

2004-01-28, 11:54 h

Ralf27
Posts: 2779
User
Zitat:
Original von dante:
Ralf27, ich hab damals auch nur Asm und Blitz programmiert, aber davon fiel mir der Umstieg auf C doch erstaunlich leicht. Versuchs, es lohnt sich :)
Bzgl. Sortieralgos frag ich mich allerdings, ob es wirklich keine blitzlib gibt, die einen qsort beinhaltet. Erstaunlich...:shock2:
Wenn du es selber nicht hinbekommen solltest, kann ich ja mal versuchsweise einen qsort in Blitz eintipp0rn. Aber versuch du es erstmal selber. Und wenn du es hinkriegst, gleich als Source posten. :O


Ich hab mir zwar damals auch mal BlitzBasic gekauft weil ich damals von AmigaBasic auf Blitz umsteigen wollte, aber ich hab mir dann doch noch MaxonBasic gekauft weil da der Syntax zu AmigaBasic 100% gleich ist aber auch noch mehr kann wie z.b. Hook, TagLists und noch einiges mehr. Aber das ganze hab ich ehrlichgetippt noch nie eingesetzt...

Blitz hab ich nie richtig programmiert und da es jetzt AmiBlitz (war ja früher BlitzBasic) frei gibt... nunja, aber c ist wohl die Welt.

Von Blitz nach C ist der Sprung gering, aber von MaxonBasic zu C... hm, ich bin ein alter Coder der aus Spaß an der Sache hier und da mal was kleines schreibt und dann hier und da auch mal ein paar Monate lang nix macht. Ob ich C nochmal lernen könnte?

Kurze frage (wurde ich von einem IT-Student gefragt): gibt es C++ für Amiga? Ich denke doch mal schon, oder? gcc?
(Wie schon getippt, hab von C keine Ahnung)



--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-28, 11:57 h

Ralf27
Posts: 2779
User
Zitat:
Original von Solar:
Bestätige. Ich habe seinerzeit auch mit Basic angefangen (ZX80, C64 "Basic 2.0", C128 "Basic 7.0"), mir dann irgendwann auf dem Amiga ARexx angetan und lange Zeit nichts von C und Konsorten wissen wollen. "Zu kryptisch, Basic ist einfacher."

Aber mit C/C++/Java/Perl und all den anderen "func() { }"-Sprachen geht einem eine ganz neue Welt auf...


Verwechsel bitte C64-Basic nicht mit z.b BlitzBasic oder MaxonBasic. :-)

Hook und TagLists gehen auch mit Basic, sowie auch Func() und andere Feinheiten.

Z.b. gab es auch schon damals auf dem A500 unter AmigaBasic DEF Func(...)=...
Ist also nix neues. :-)



--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-01-28, 12:03 h

Ralf27
Posts: 2779
User
Achja, nochwas wegen Basic:

Mir hat mal ein PC-Programmierer(bzw. genauer Student.. der hat das ganze gelernt und lernt jetzt noch mehr... :-) ) mir mal auf einem 2,4GHz-Pentium sein VisualBasic vorgeführt. Ok, innerhalb von 30Min konnte ich da auch ein kleines Testprogramm schreiben. Und dieses Testprogramm haute mich vom Hocker gehaun!

Hey, das ganz war so Arsch langsam! Selbst compiliert! Sorry, aber da zieht MaxonBasic auf meinem kleinen Amiga ab wie eine Rakete!

(Das Testprogramm zeichnete einfach auf den Bildschirm einige Punkte dessen Farbwert mit SIN/COS errechnet worden ist)

Jetzt weiß ich auch wieso die PCler immer schnellere Rechner brauchen... die Programme werden ja immer langsamer...
--
http://www.alternativercomputerclub.de.vu

[ Dieser Beitrag wurde von Ralf27 am 28.01.2004 editiert. ]

[ - Answer - Quote - Direct link - ]

2004-01-28, 12:13 h

Solar
Posts: 3680
User
Zitat:
Original von Ralf27:
Kurze frage (wurde ich von einem IT-Student gefragt): gibt es C++ für Amiga? Ich denke doch mal schon, oder? gcc?


Schon seit einigen Jahren. Ausgelaufene Produkte waren z.B. MaxxonC++, StormC (das auch C++ konnte) und der C++-Patch für SAS/C.

Das heutige StormC 4 setzt auf einer 2.9x-Version von gcc auf; einen aktuellen gcc 3.x gibt's aber auch (nur ohne IDE).

Das diverse Sachen mit Basic auch gehen, ist mir wohl klar. Ich meinte das "Codebeispiel" eigentlich auch nur im Bezug auf die syntaktische Gemeinsamkeiten dieser Sprachfamilie, und in Abgrenzung zu eher Schlüsselwort-lastigen BASIC-Syntax.

Trotzdem sind C und Nachfahren eine etwas andere Liga als Basic; sie sind halt nicht "Beginners All-Purpose Simple Instruction Code", sondern "echte Programmiersprachen". ;-)

Und Dein VB-Beispiel... ich denke, der gute Mensch hat ziemlichen Mist programmiert. Ich habe u.a. eine VB-DLL programmiert, die pro Sekunde über einige tausend Datensätze komplexe Berechnungen durchführt.

Aber letztlich ist das alles eine Frage der richtigen Sprache für das richtige Problem. Nur habe ich keine Zeit, X verschiedene Sprachen zu lernen - so lebe ich ganz gut mit C++, Perl, und etwas VB. ;-)

[ - Answer - Quote - Direct link - ]

2004-01-28, 12:18 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Ralf27:

Kurze frage (wurde ich von einem IT-Student gefragt): gibt es C++ für Amiga? Ich denke doch mal schon, oder? gcc?
(Wie schon getippt, hab von C keine Ahnung)


IT-Student? Wohl im ersten Semester, was? ;)
Also gcc gibt's - genau wie die anderen GNU-Tools - für so ziemlich alles und jedes, also auch für Amiga.

Der soll mal unter http://www.ninemoons.com nachschauen.

Für den Amiga speziell gibt's dann noch z.B. den C/C++ Compiler StormC mit Entwicklerumgebung.

Dann existieren auchnoch diverse PD C/C++ Compiler, sowie einige ganz alte Pakete.

--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-01-28, 12:29 h

Solar
Posts: 3680
User
Zitat:
Original von Mad_Dog:

Dann existieren auchnoch diverse PD C/C++ Compiler, sowie einige ganz alte Pakete.


Da werde ich jetzt aber hellhörig - C++-Compiler unter PD? Hast Du da mal einen Link dazu?

[ - Answer - Quote - Direct link - ]

2004-01-28, 12:40 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Solar:
Zitat:
Original von Mad_Dog:

Dann existieren auchnoch diverse PD C/C++ Compiler, sowie einige ganz alte Pakete.


Da werde ich jetzt aber hellhörig - C++-Compiler unter PD? Hast Du da mal einen Link dazu?


Dice und vbcc können AFAIK "nur" C.

gcc steht unter GPL. Den g++ (Gnu C++ Compiler) wirst Du wohl kennen.


--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-01-28, 15:56 h

dante
Posts: 111
User
Es ist schon etwas haarig, gcc zu installieren. Als Einsteiger in die Materie ist auf Amiga wohl am ehesten das GoldEd-Package zu empfehlen, da ist ein komplettes gcc-Paket dabei. Guckst du hier: http://golded.dietmar-eilert.de/ . Ist aber Löhnware. :D

Und wenn man MaxonBasic benutzt, sollte der Umstieg auf c/c++ doch nun wirklich leicht fallen! Ich bin damals vor dem Teil zurück geschreckt, das war mir zuwenig Basic... :)

[ - Answer - Quote - Direct link - ]


-1- 2 [ - Post reply - ]


amiga-news.de Forum > Programmierung > Sortieren [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.