AGB  ·  Datenschutz  ·  Impressum  







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

Heapsort

Ein Thema von sveno2k5 · begonnen am 30. Jan 2005 · letzter Beitrag vom 27. Apr 2005
Antwort Antwort
sveno2k5

Registriert seit: 24. Jan 2005
7 Beiträge
 
#1

Heapsort

  Alt 30. Jan 2005, 19:11
Hallo, hab gerade mal probiert den Heapsort zu programmieren, aber denke ich habe die Funktionsweise nicht ganz verstanden. Der soll doch noch schneller sein als qick und mergesort oder? Bei meinem Heapsort sortiert er die Zahlenreihe zwar korrekt, aber in einer viel langsameren Zeit als quick und mergesort. Hier der Code:

Delphi-Quellcode:
procedure heap_sort;
var i,y: integer;
begin
 IF anzahl > 1 THEN
 begin
  FOR i := (Anzahl - 1) DOWNTO 1 DO
  begin
   FOR y := (i+1) DIV 2 DOWNTO 1 DO
   begin
    IF sortfeld[y] < sortfeld[2*y] THEN
     tausche(sortfeld[y],sortfeld[2*y]);
    IF (sortfeld[y] < sortfeld[2*y+1]) AND ((2*y+1) <= (i+1)) THEN
     tausche(sortfeld[y],sortfeld[2*y+1]);
   end;
   tausche(sortfeld[1],sortfeld[i+1]);
  end;
 end;
end;
Kann mir jemand sagen wo ich die Funktionsweise falsch verstanden habe?

Gruss Sven
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Heapsort

  Alt 31. Jan 2005, 08:34
Was glaubst du wohl, warum Quicksort so heißt?
Im Mittel hat Quicksort die beste Zeitkompleität aller (mir bekannten) Sortieralgorithmen, also ist Quicksort auch besser als Heapsort (zumindest bei großen Datenmengen).
Bei Heapsort muss man ja nach jedem Durchlauf den "Heap" neu sortieren, was ziemlich aufwendig sein kann. Darum würde ich dir Quicksort empfehlen, wenn's schnell gehen soll. Falls Zeit nicht so die große Rolle spielt, kannst du aber auch Heapsort verwenden.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Heapsort

  Alt 27. Apr 2005, 19:22
Quicksort ist nicht immer schneller als Heapsort,
sortiere mal ein sortiertes Array mit Heapsort und mit Quicksort, du wirst sehen das Quicksort zum "slowsort" wird.
Quicksort hat den vorteil das es große Datenmengen sehr schnell sortieren kann, wenn jedoch im array schon eine strucktur herrscht, z.B. es ist schon sortiert, ist es sehr lahm, da ist heapsort besser da es das Array auf heapeigenschaft bringt, d.h.
a[i] <= a[2*i]
a[i] <= a[2*i+1]

Und heapsort ist nur minimal langsamer als quicksort, d.h. ich würde lieber heapsort nehmen da es nie langsam werden kann!
Jan
  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 23:06 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