AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Listbox zum Quicksort benutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox zum Quicksort benutzen

Ein Thema von DJSvenek · begonnen am 22. Jan 2009 · letzter Beitrag vom 22. Jan 2009
Antwort Antwort
DJSvenek

Registriert seit: 22. Jan 2009
5 Beiträge
 
#1

Listbox zum Quicksort benutzen

  Alt 22. Jan 2009, 14:13
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]
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Listbox zum Quicksort benutzen

  Alt 22. Jan 2009, 14:25
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
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
DJSvenek

Registriert seit: 22. Jan 2009
5 Beiträge
 
#3

Re: Listbox zum Quicksort benutzen

  Alt 22. Jan 2009, 17:56
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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