AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mischsortieren

Ein Thema von JayAy · begonnen am 3. Apr 2010 · letzter Beitrag vom 3. Apr 2010
Antwort Antwort
JayAy
(Gast)

n/a Beiträge
 
#1

Mischsortieren

  Alt 3. Apr 2010, 20:39
Hi Leute,

ich hab zwar schon einen ähnlichen Beitrag gesehen Beitrag zu Mischsortieren, jedoch hab ich dort absolut nicht gefunden, was ich suche. Also hier mein Problem:

Ich habe - wie ich eigentlich angemommen hab - 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...


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.
  Mit Zitat antworten Zitat
JayAy
(Gast)

n/a Beiträge
 
#2

Re: Mischsortieren

  Alt 3. Apr 2010, 22:14
Querpost: Delphi-Forum
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#3

Re: Mischsortieren

  Alt 3. Apr 2010, 23:01
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
  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 03:51 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