![]() |
AW: Stabiles Sortieren
Zitat:
|
AW: Stabiles Sortieren
Ja ok, du hast streng genommen recht. Allerdings habe ich stabile Sortierverfahren bisher eigentlich immer nur gebraucht, wenn ich nicht wollte, dass die Einträge bei wiederholtem Sortieren zufällig hin- und herspringen. Ich hatte jetzt von der Ecke aus gedacht.
|
AW: Stabiles Sortieren
Zitat:
Hintergrund: Nach dem Durchlauf der For ... Schleife steht das größte Element am Ende des Arrays. Also muss beim nächsten Durchlauf das vorletzte Element nicht mehr mit dem letzten Element verglichen werden. Das verringert die Anzahl der zu vergleichenden Elemente bei jedem Durchlauf um 1.
Delphi-Quellcode:
class procedure TArrayHelper.BubbleSort<T>(var A: TArray<T>; const Comparer: IComparer<T>);
var I,Last: Integer; Done: Boolean; begin Last:=High(A); repeat Dec(Last) Done := true; for I := Low(A) to Last do begin if (Comparer.Compare(A[I], A[I + 1]) > 0) then begin Exchange<T>(A, I, I + 1); Done := false; end; end; until Done; end; |
AW: Stabiles Sortieren
Zitat:
Delphi-Quellcode:
sein, sonst kracht es beim Zugriff auf
Last := High(A) - 1
Delphi-Quellcode:
.
A[I + 1]
|
AW: Stabiles Sortieren
Zitat:
|
AW: Stabiles Sortieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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