Basic Bubblesort


Basic Bubblesort

von eda70 » Do 15. Okt 2009, 16:07
Will 6 Zahlen sortieren. Geht das auch einfacher?
Code: Alles auswählen
4000 PROC BUBBLESORT
4010   REPEAT
4015     TAUSCH=0
4020     FOR X=1 TO 5
4030       IF M1(X)>M1(X+1)
4040         STA=M1(X):M1(X)=M1(X+1):M1(X+1)=STA
4050         TAUSCH=1
4060       ENDIF
4070     NEXT X
4080   UNTIL TAUSCH=0
4090 ENDPROC

Re: Basic Bubblesort

von mp-one » Mo 19. Okt 2009, 10:37
Hi Eda,

also ich glaube, Bubblesort ist schon recht einfach. Ich habe hier noch eine Implementierung für Pascal gefunden, die zwar ohne "TAUSCH" auskommt, ansonsten aber auch nicht viel übersichtlicher ist.

Code: Alles auswählen
procedure bubble;
var i,j,t:integer;
begin
  for i:=n downto 1 do
    for j:=2 to i do
      if a[j-1]>a[j] then
        begin t:=a[j-1]; a[j-1]:=a[j]; a[j]:=t; end;
   end;
end;


Gruß,

Michael

Re: Basic Bubblesort

von FlorianD » Mo 19. Okt 2009, 20:40
soweit ich das auf einen Blick verstehe, ist der erste Codeschnippsel besser, weil er abbricht, wenn die Reihenfolge stimmt (Tausch am Ende der Schleife 0 ist). Der zweite Schnippsel läuft auf jeden fall n+ n-1 +n-2 + ... +n-n mal durch.
Oder habe ich da was übersehen?

Re: Basic Bubblesort

von pps » Mo 19. Okt 2009, 23:50
Ich hatte da mal ein Pascal Programm geschrieben, das etliche Sortierroutinen vergleicht. War mit TurboPascal damals für die Schule. Bubble war klar hinten.
Ich versuche mal das Programm aufzufinden (ist ja nun auch schon gut 15 Jahre her ;) ). Aber ich habe es noch auf meinem Falcon, wo ich´s damals programmiert hatte - weil das PurePascal dort um Längen besser war, als das Turbo 5, was damals auf dem PC aktuell war - schon alleine, wegen GEM :)

Re: Basic Bubblesort

von cas » Di 20. Okt 2009, 10:04
pps hat geschrieben:Ich hatte da mal ein Pascal Programm geschrieben, das etliche Sortierroutinen vergleicht. War mit TurboPascal damals für die Schule. Bubble war klar hinten.


Bei 6 Eintraegen sollte die Geschwindigkeit aber kein Ausschlag gegeben. Ab 50 Eintraegen wuerde ich QuickSort benutzen, http://en.wikipedia.org/wiki/Quicksort

-- Carsten

Re: Basic Bubblesort

von FlorianD » Di 20. Okt 2009, 10:28
Quicksort benötigt aber Rekursion. Nicht alle Sprachen können das.

Re: Basic Bubblesort

von eda70 » Di 20. Okt 2009, 10:41
Danke für die Antworten.
Bubblesort ist halt schön einfach.
Wollte nur wissen, ob man die paar Basiczeilen noch kürzer, schöner oder eleganter hätte machen können.
Wenn nicht - um so besser :)

Re: Basic Bubblesort

von mp-one » Di 20. Okt 2009, 11:32
FlorianD hat geschrieben:Quicksort benötigt aber Rekursion. Nicht alle Sprachen können das.


Hi!

Ja, aber man kann es auch in eine nicht-rekursive Form bringen, wenn man Stapeloperationen nachbildet.

Gruß,

Michael

Re: Basic Bubblesort

von pps » Di 20. Okt 2009, 16:57
@cas: Ja Du hast Recht. Das mit den 6 Einträgen habe ich nicht so richtig für voll genommen. Da ist es relativ egal, welchen Algorithmus man nimmt.