AGB  ·  Datenschutz  ·  Impressum  







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

Sortieralgo

Ein Thema von Rastaman · begonnen am 1. Mär 2005 · letzter Beitrag vom 2. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#1

Sortieralgo

  Alt 1. Mär 2005, 22:39
Juhuu.
Ich wollt son eigenen kleinen (wahrscheinlich auch seeehr langsamen) Sortieralgo machen und wollt mal fragen warum ich bei diesem Code den Fehler Access Violation at Adress 00000000 oder auch mal 000000018 bekomme

Delphi-Quellcode:
var
  sl: TStringList;
  i, i2: Integer;
  smallest: String;
begin
  sl := TStringList.Create;
  i := ListBox1.Items.Count - 1;
  Repeat
    smallest := ListBox1.Items.Strings[0];
    For i2 := 0 to i - 1 do begin
        if ListBox1.Items.Strings[i2 + 1] < smallest then
          smallest := ListBox1.Items.Strings[i2 + 1];
    end;
    i := i - 1;
    sl.Add(smallest);
  Until i = 1;

  ListBox1.Items.Free;
  For i := 0 to sl.Count - 1 do
    ListBox1.Items.Add(sl.Strings[i]);
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Sortieralgo

  Alt 1. Mär 2005, 23:00
Ich tippe deswegen :
Delphi-Quellcode:
ListBox1.Items.Free;
  For i := 0 to sl.Count - 1 do
    ListBox1.Items.Add(sl.Strings[i]);
Müsste so aussehen:
Delphi-Quellcode:
  For i := 0 to sl.Count - 1 do
    ListBox1.Items.Add(sl.Strings[i]);
 ListBox1.Items.Free; // diese Zeiele verstehe ich nicht ganz ???
Wieso willst du die Items freigeben, wenn du sie vorher mit Werten gefühlt hast, ohne sie zu benutzen ?
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#3

Re: Sortieralgo

  Alt 2. Mär 2005, 06:17
Einer der schlechtesten Sortieralgorithmen ist BogoSort.

Wenn man es mit Spielkarten erklaert dann geht es so:

1. Schmeiss die Karten auf den Boden.
2. Heb sie auf und pruefe ob sie sortiert sind.
3. Wenn nicht dann zurueck zu 1.

Bei diesem Algorithmus ist nicht einmal die Termination gesichert.
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Sortieralgo

  Alt 2. Mär 2005, 08:42
Hi,

bei Delphi die Thread-Demo hat doch auch 3 verschiedene Sortieralgos oder?
Ist davon keiner für deine zwecke brauchbar?

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.838 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Sortieralgo

  Alt 2. Mär 2005, 09:10
Delphi-Quellcode:
var
  sl: TStringList;
  i, i2: Integer;
  smallest: String;
begin
  sl := TStringList.Create;
  i := ListBox1.Items.Count - 1;
  Repeat
    smallest := ListBox1.Items.Strings[0];
    For i2 := 0 to i - 1 do begin
        if ListBox1.Items.Strings[i2 + 1] < smallest then
          smallest := ListBox1.Items.Strings[i2 + 1];
    end;
    i := i - 1;
    sl.Add(smallest);
  Until i = 1;
Du entfernst das Objekt Items aus dem Speicher.  ListBox1.Items.Free; Und willst hier wieder auf Items zugreifen, das Objekt ist aber von Dir aus dem Speicher entfernt worden.
Delphi-Quellcode:
  For i := 0 to sl.Count - 1 do
    ListBox1.Items.Add(sl.Strings[i]);
Falls Du Items nur leeren möchtest (also nur den Inhalt):
Delphi-Quellcode:
...
  ListBox1.Items.Clear;
...
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#6

Re: Sortieralgo

  Alt 2. Mär 2005, 14:14
Jo klappt. Ich dachte das löscht einfach alle.
Aber 1.Das Ding is kackenlangsam.
2.Es sortiert nicht wirklich richtig und es sind 1000 fehler drin.
Muss ich wohl nochma guggn.
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Sortieralgo

  Alt 2. Mär 2005, 14:44
Selection Sort ist nicht schnell aber für kleinere Listen sehr geignet.
Hier:
Delphi-Quellcode:
procedure SelectionSort( Was : TStrings);
 var i,j:integer;
     temp : string;
begin
  if Was.Count >0 then
  begin
   for i:=0 to Was.Count-1 do
        for j:=i to Was.Count-1 do
         if Was.Strings[i] > Was.Strings[j] then
         begin
          temp := Was.Strings[i];
          Was.Strings[i] := Was.Strings[j];
          Was.Strings[j] := temp;
         end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
 var a:integer;
begin
 Randomize;
 for a:=0 to 30 do ListBox1.Items.Add(inttostr(random(10000)));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SelectionSort(ListBox1.Items);
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

Registriert seit: 6. Jan 2005
Ort: Lübbecke
575 Beiträge
 
Turbo C++
 
#8

Re: Sortieralgo

  Alt 2. Mär 2005, 15:11
könnte das mal einer ausführlich kommentieren?
Chuck Norris has counted to infinity ... twice!
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.838 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Sortieralgo

  Alt 2. Mär 2005, 16:03
Zitat von Gerrit89:
könnte das mal einer ausführlich kommentieren?
Warum?
Es gibt doch ein gutes Tutorial zum Thema Sortieren:
http://www.delphipraxis.net/internal_redirect.php?t=344

Viel Spaß beim lesen
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Sortieralgo

  Alt 2. Mär 2005, 17:40
Ich glaube ListBox1.Items.Free sollte man unter keinen umständen machen. Items wird ja von der ListBox verwaltet und diese dann einfach freigeben ...

Um alle einträge zu löschen, mach lieber ein Clear.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:23 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