AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Quicksort Zugriffsverletzung bei Adresse XX in Modul
Thema durchsuchen
Ansicht
Themen-Optionen

Quicksort Zugriffsverletzung bei Adresse XX in Modul

Ein Thema von Falldownnice · begonnen am 22. Sep 2015 · letzter Beitrag vom 22. Sep 2015
 
Falldownnice

Registriert seit: 22. Sep 2015
4 Beiträge
 
#1

Quicksort Zugriffsverletzung bei Adresse XX in Modul

  Alt 22. Sep 2015, 07:22
Guten Tag liebe Delphi Community! Ich und ein Freund stehen in unserem Informatik Unterricht vor einem Fehler mit einem Quicksort Programm, bei dem auch unser Lehrer uns nicht recht zu helfen weiß..

Problem ist, wie schon im Titel angesprochen, eine Zugriffsverletzung, welche via Popup Fenster beim Sortieren vorher erstellter Zufallszahlen erscheint.
Ich denke ich poste einfach mal den Code (sofern mir das gelingt)
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    Button4: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen}
  public
    { Public-Deklarationen}
  end;

var i,j,h,n:integer;
   s:string;
    z:array[1..10000] of integer;
  Form1: TForm1;

implementation

{$R *.DFM}
const nn=1000;

procedure TForm1.Button1Click(Sender: TObject);
var zeita,zeitb,zeitOP:integer;
begin
zeita:=gettickcount;
s:=' ';
memo1.clear;
for i:=1 to nn do
              begin
              z[i]:=random(100);
              s:=s+IntToStr(z[i])+',';
              end;

zeitb:=gettickcount;
zeitOP:=zeitb-zeita;
Label2.caption:=IntToStr(zeitOP);

memo1.lines.add(s);
j:=1;
n:=10;


end;

procedure TForm1.Button2Click(Sender: TObject);
var zeita,zeitb,zeitOP:integer;
begin
zeita:=gettickcount;
repeat
j:=j+1;

for i:=1 to j do if z[j]<z[i] then
                              begin
                              h:=z[i];
                              z[i]:=z[j];
                              z[j]:=h;
                              end;
until j=n;

zeitb:=gettickcount;
zeitOP:=zeitb-zeita;
Label1.caption:=IntToStr(zeitOP);

s:=' ';
for i:=1 to n do s:=s+IntToStr(z[i])+',';
memo1.lines.add(s);


end;

procedure Quicksort(var A:array of integer);

procedure Quick_Sort(var A:array of Integer; iLo, iHi: Integer) ;
 var
   Lo, Hi, Pivot, T: Integer;
 begin
   Lo := iLo;
   Hi := iHi;
   Pivot := A[(Lo + Hi) div 2];
   repeat
     while A[Lo] < Pivot do Inc(Lo) ;
     while A[Hi] > Pivot do Dec(Hi) ;
     if Lo <= Hi then
     begin
       T := A[Lo];
       A[Lo] := A[Hi];
       A[Hi] := T;
       Inc(Lo) ;
       Dec(Hi) ;
     end;
   until Lo > Hi;
   if Hi > iLo then Quick_Sort(A, iLo, Hi) ;
   if Lo < iHi then Quick_Sort(A, Lo, iHi) ;
 end;
begin
Quick_Sort(A, Low(A), High(A)) ;
end;

procedure TForm1.Button3Click(Sender: TObject);
var i,n:integer;
begin


for i := 0 to nn do z[i]:=random(10);

QuickSort(z);

s:=' ';
for i:=1 to nn do s:=s+IntToStr(z[i])+',';
memo1.lines.add(s);



end;

procedure TForm1.Button4Click(Sender: TObject);
var zeita,zeitb,zeitOP:integer;
begin
zeita:=gettickcount;
s:=' ';
memo1.clear;
for i:=1 to nn do
              begin
              z[i]:=random(100);
              s:=s+IntToStr(z[i])+',';
              end;

zeitb:=gettickcount;
zeitOP:=zeitb-zeita;
Label3.caption:=IntToStr(zeitOP);

memo1.lines.add(s);

end;

end.
Die ersten beiden Buttons sind zu vernachlässigen, da sie für eine andere Zählemtode sind, relevant ist nur Quicksort und die buttons 3 und 4.

Würde mich sehr über Hilfe freuen, lg Falldownnice
  Mit Zitat antworten Zitat
 

 

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 13:52 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