Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Listbox zum Quicksort benutzen (https://www.delphipraxis.net/127999-listbox-zum-quicksort-benutzen.html)

DJSvenek 22. Jan 2009 14:13


Listbox zum Quicksort benutzen
 
Hilfe
ich sitz hier muss unterricht sortiervorgänge bearbeiten und frag mich nur wieso der scheiß nich funtio
ähm alles soweit geschrieben aber nich wieder in ausgabe wieso?

sieh ungefähr so aus:
Delphi-Quellcode:
unit Unit1weilist;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    zehl: TEdit;
    hinzu: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    rechner: TButton;
    hinweg: TButton;
    ergebnis: TEdit;
    schluss: TButton;
    procedure hinzuClick(Sender: TObject);
    procedure hinwegClick(Sender: TObject);
    procedure schlussClick(Sender: TObject);
    procedure rechnerClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  n,t:integer;
  zahl:array[0..100]of integer;

implementation

{$R *.dfm}

procedure TForm1.hinzuClick(Sender: TObject);
begin
 ListBox1.Items.Add(zehl.Text);
end;

procedure quicksort (l,r:Integer);
var i,j,mitte,merke:integer;
begin
 i:=l;
 j:=r;
 mitte:=zahl[(l+r) div 2];
 repeat
  while zahl[i]< mitte do Inc(i);
  while mitte<zahl[j] do Dec(j);
  if i<=j then
   begin
    merke:=zahl[i];
    zahl[i]:=zahl[j];
    zahl[j]:=merke;
    inc(i);
    dec(j);
   end;
  until i>j;
  if l<j then Quicksort(l,j);
  if i<r then Quicksort(i,r);
end;

procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
  stop := gettickcount;
  application.processmessages;
  until (stop - start ) >= msec;
end;

procedure TForm1.hinwegClick(Sender: TObject);
begin
 ListBox1.Items.Clear;
 ListBox2.Items.Clear;
end;

procedure TForm1.schlussClick(Sender: TObject);
begin
close;
end;

procedure TForm1.rechnerClick(Sender: TObject);
var a,c:integer;
begin
 t:=ListBox1.ItemIndex;
 t:=t-1;
 for a:=0 to t do
  zahl[a]:=strtoint(ListBox1.Items[a]);
  quicksort(0,n);
  for c:=1 to t do
   begin
    ergebnis.Text:=inttostr(zahl[c]);
    ListBox1.Items.Add(ergebnis.Text);
   end;
end;

end.
[edit=Luckie]Code formatiert. Bitte beim nächsten Mla selber machen. Mfg, Luckie[/edit]

matashen 22. Jan 2009 14:25

Re: Listbox zum Quicksort benutzen
 
Ich würd da einfach Listbox1.sorted:=true machen, oder eben im OI die Eigenschaft gleich einstellen. Spart man sich diese doofen Algos zur sortierung.

Gruß Matthias

DJSvenek 22. Jan 2009 17:56

Re: Listbox zum Quicksort benutzen
 
du matthias das wäre zwar möglich aber diese sortierung ist nicht nach meiner wahl, denn wenn ich das so mache dann sortiert delphi nach alphabet! ich möchte aber nach dem zahlenwert sortieren?
ich wüsste gerne ob du irgendwo einen fehler entdeckst!
trotzdem vielen dank.
:glaskugel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz