Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Verständnisprobleme bei dem einen Quelltextteil...!
Delete - Mo 07.03.05 15:36
Titel: Verständnisprobleme bei dem einen Quelltextteil...!
hi leute...
hab von einem kumpel ne lösung für BubbleSort bekommen...doch irgendwie kann ich den Quelltext nicht ganz verstehen...
wäre super wenn mir jemand hilft und mir sagt was die einzelnen zeilen bedeuten:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| unit uData; interface
uses SysUtils, Classes;
type TFeld = array[1..8] of integer; TDaten = class(TDataModule) private public A : TFeld; N : TFeld; procedure bubblesort(var A:TFeld;anzahl : integer); end;
var Daten: TDaten;
implementation
{$R *.dfm} procedure swap(var x,y:integer); var merker : integer; begin merker:=x; x:=y; y:=merker; end;
procedure TDaten.bubblesort(var A:TFeld;anzahl : integer); var i,j : integer; begin for i:= 2 to anzahl do for j := anzahl downto i do if A[j-1]>A[j] then swap(A[j-1],A[j]); end; |
Das Programm läuft...doch verstehen tue ich zB. nicht wieso i= 2 ist.... :(
Bitte um HILFE....danke im voraus....bye!
Moderiert von
raziel: Delphi-Tags hinzugefügt.
wdbee - Mo 07.03.05 16:33
Die innerste Schleife läuft doch von Anzahl rückwärts bis I. Da für den Tausch (Swap) der eine Index I-1 ist, darf I nur bis I=2 vermindert werden.
Gausi - Mo 07.03.05 17:57
Sag doch bitte nochmal, was TFeld ist. Beginnt da die Indizierung bei 1 (statisches Array[1..xxx]), oder bei 0 (dynamisches Array)?
Delete - Mo 07.03.05 23:10
Titel: okay
okay habs nochmal verbessert...
nun hab ich auch array drin...
nun würde ich gerne wissen, was die zeilen heißen bei bubblesort...
please help...
danke im voraus..
MrSaint - Mo 07.03.05 23:27
Das ist praktisch ein umgedrehter
BubbleSort [
http://de.wikipedia.org/wiki/Bubblesort]. Im "normalen" BubbleSort steigt das größte Element einer Liste (oder eines Arrays) nach oben auf, wie eine Blase (-> Name: BubbleSort). Bei diesem "Exemplar" sinkt das kleinste Element nach unten ab. Schau dir mal den Link an, dann solltest du den BubbleSort verstehen. Und nichts anderes ist eben hier implementiert...
MrSaint
Gausi - Mo 07.03.05 23:27
na gut. Fangen wir bei i=2 an. Die innere Schleife kläuft dann von anzahl runter bis 2. Wenn nun A[j-1]>A[j] ist, dann ist ein großes Element vor einem kleinen Element. Das ist unschön, und daher werden mit swap(A[j-1],A[j]); die beiden Elemente vertauscht. Auf diese Weise wandert das kleinste Element des Arrays ganz nach vorne auf Position 1. Diese Position muss im nächsten Durchlauf nicht mehr betrachtet werden, daher können wir schon bei 3 aufhören (in diesem Durchlauf wandert dann das zweitkleinste Element auf Position 2)
Sind diese Inline-Delphi-Tags nicht klasse?
MrSaint - Mo 07.03.05 23:31
Gausi hat folgendes geschrieben: |
Sind diese Inline-Delphi-Tags nicht klasse? |
Sehr schön 8) :dance:
*gg* Sorry für das OT ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!