![]() |
Mischsortieren
Hi Leute,
ich hab zwar schon einen ähnlichen Beitrag gesehen ![]() Ich habe - wie ich eigentlich angemommen hab :oops: - ein Programm geschrieben, dass mithilfe von Michsort Zahlen in einem Array sortieren soll. Die procedures, die ich reingeschrieben habe, müssten eigentlich zuverlässig sein, da ich sie einem Buch entnommen und wenig modifiziert habe. Das große Problem ist, dass mir die Zahlen im Stringrid in beiden Spalten gleich und damit völlig unsortiert ausgegeben werde... ich hoffe, ihr wisst Rat... :idea:
Delphi-Quellcode:
unit Mischsortieren;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Liste: array[1..100000] of integer; l: integer; implementation {$R *.dfm} Procedure Mischsortieren1 (links,rechts: Integer); var Endelinks, Anfangrechts:Integer; Procedure Mischen1 (I,J:Integer); var Z, K: Integer; begin if I<J then begin if Liste[I]<=Liste[J] then begin Mischen1(I+1,J); end else begin z:=Liste[J]; end; For k:=J-1 to I do begin Liste[K+1]:=Liste[k]; end; Liste[I]:=Z; if J<rechts then begin Mischen1(I+1,J+1); end; end; end; begin Endelinks:=round((links+rechts)/2); Anfangrechts:=Endelinks+1; if links<Endelinks then begin Mischsortieren1(links,Endelinks); end; if Anfangrechts<rechts then begin Mischsortieren1(Anfangrechts,rechts); end; Mischen1(links,Anfangrechts); end; procedure TForm1.Button1Click(Sender: TObject); begin Randomize; For l:= 1 to 100000 do begin Liste[l]:= Random(1000)+1; stringgrid1.Cells[3,l]:=inttostr(Liste[l]); end; Mischsortieren1 (Liste[1],Liste[100000]); For l:=1 to 100000 do begin stringgrid1.Cells[4,l]:=inttostr(Liste[l]); end; end; end. |
Re: Mischsortieren
Querpost:
![]() |
Re: Mischsortieren
Du sortierst nur einen kleinen Teil der Liste irgendwo im Bereich von Index 1 bis 1000 - weil du als Links und Rechts nicht den Index, sondern den Inhalt übergibst ;)
Grüsse, Dirk |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz