Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Sortierfunktion ohne Grafik


Speedy90 - Mo 03.03.08 19:05
Titel: Sortierfunktion ohne Grafik
Hey Hey

bin hier neu aber find alles recht hiflreich was man hier bei euch so findet ...

Jedoch finde ich nichts für mein momentanes problem. Mein Problem ist folgendes:

Ich schreibe Mittwoch eine Klassenarbeit in programmieren. Wir programmieren zwar in Delphi ( sprich nur im Dos Fenster bzw ne Konsolenanwendung ) aber noch nicht Grafik orientiert. Und unser Lehrer meinte dann am Freitag zu uns das wir für eine 1 auch eine Sortierfunktion programmieren können müssen ... jedoch verzweifel ich zurzeit vollkommen an der Funktion .. habe mir zwar schon zurzeit ein Struktogramm aufgebaut aber trotzdem komm ich einfach nicht weiter ..

Könnte mir einer von euch helfen ? denn möchte die Arbeit am Mittwoch nicht verhaun bzw auch nicht schlechter als 2 sein da ich meine Note doch halten möchte ... ich denke mal das es hier einzelne gibt die über solch eine Aufgabe lachen werden aber ich als anfänger beiß mir nunmal die Zähne aus und würd mich freuen wenn mir einer der "alten Hasen" helfen könnte

Gruß Speedy


Marc. - Mo 03.03.08 19:13

Hi!
Welche Daten willst Du denn sortieren? Vermutlich Arrays oder?
Wie schaut denn Dein bisheriger Ansatz aus und was genau funktioniert nicht?
Und letzendlich, welche Sortierverfahren hattet ihr bereits im Unterricht? (Bubblesort, Quicksort, Shellsort usw.)

Grüße,
Marc.


nagel - Mo 03.03.08 19:15

Hi und :welcome:

1. Was hat die Sortierfunktion mit Grafik zu tun?

2. Habt ihr schon Sortierverfahren gelernt?

3. Wo genau scheitern deine Versuche?

4. Wenn ihr noch keine Verfahren gelernt habt, schau dir mal welche an und nimm das, das dir am einfachsten erscheint (also beispielsweise Selection Sort, Quicksort, Bubblesort, Mergesort, Shellsort).


Speedy90 - Mo 03.03.08 19:23

@ Marc :

Sry ganz vergessen ^^ also es geht darum das man per hand oder per random funktion Zahlen erzzeugt die in 3 oder mehreren Variablen gespeichert wird .. also es muss nicht unbedingt ein array sein ... und diese zahlen dann vond er größten zur kleinsten geordnet werden

Den Ansatz werd ich heut abend mal nachreichen... hab ihn zurzeit nicht zur hand da er auf meinem PC daheim ist und ich noch unterwegs bin und grad am notebook on bin ...

und nein haben noch keine Sortierverfahren durchgenommen ... nur kurz angesprochen wie sowas gehen könnte und damit das struktogramm erstellt .. aba ich bin nicht schlau draus geworden ^^


@ nagel:

zu 1 ) ich habs nur dazu geschrieben da ich hier zwar vieles zu dem thema gesehen habe aba das alles soweit ich es erkennen konnte mit Grafik war... sollte nur verdeutlichen das es sich um eine ausgabe dann in einem DOS Fenster handeln soll

zu 2 ) nein haben wir nicht ... s.o. für genaueres ^^

zu 3 ) er sortiert mir meine Zahlen nicht ... Bsp : ich gebe die zahlen 1 5 2 ein ... dann gibt er mir die zahlen genaus so raus wie ich sie eingegeben habe obwohl er mir eig an erster stelle die größte stelle ausgeben soll und an letzter die kleinste ...



danke schonma für die rückmeldungen von euch


!!!!!! EDIT !!!!!!!

ich muss es euch moin nachreichen -.- mein verdammter bruder war an meinem pc und hat versehentlich en ordner aufm desktop gelöscht -.- natürlich den mit der Sortierfunktion ... wird zwar eng das mir dann noch einer behilflich sein kann aba naja


Speedy90 - Di 04.03.08 19:01

so okay jungs

hab das jetzt mal mithilfe von nem kumpel geschafft ...

hier im anhang hab ich euch mal die Unit angehangen und vielleicht kann mir einer noch en verbesserungstipp geben falls euch was auffällt ...

Aber danke für eure obigen antworten :)

Gruß Speedy


joker0000 - Di 04.03.08 19:48

ok, sieht doch nach nem ordentlichen bubble sort aus


Tino - Di 04.03.08 19:59

Die festen Werte bei FOR-TO-DO sind nicht ganz so optimal. ;-)


Speedy90 - Di 04.03.08 20:10

user profile iconTino hat folgendes geschrieben:
Die festen Werte bei FOR-TO-DO sind nicht ganz so optimal. ;-)


was empfiehlst denn als verbesserung ? ;)


Yogu - Di 04.03.08 20:26

Mit Length(ArrayName) bekommst du die Anzahl der Elemente im Array. Wenn du jetzt die Konstanten dynamisch anpasst, dann kann man ein Array übergeben, das eine andere Anzahl von Elementen beinhaltet.


Tino - Di 04.03.08 20:27

Ich würde mit Length die Länge des Array abfragen und diesen Wert dann benutzen. Ich hab mal kurz drüber geschaut und ein paar Änderungen (Hervorgehoben) vorgenommen. Achtung: ich habs nicht getestet!! :-)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure sortieren_mallmann (var ABC: array of integer);
var j,i,x:integer;
begin
   for j:=0 to Length (ABC) -1 do
      for i:=j+1 to Length (ABC) -1 do
         begin
            if abc [i] > abc [j] then
               begin
                  x:=abc[i];
                  abc[i]:=abc[j];
                  abc[j]:=x;
               end;
         end;
end;


uall@ogc - Do 13.03.08 09:43

Auch wenns zu spät ist und es ejemand mal lesen sollte:
Besser mit LOW und HIGH arbeiten statt mit length.
Low(ABC) to high (ABC)