From 65ddad359ed3b9b739215ec89a7645455ae10dce Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Tue, 5 Oct 2010 18:28:42 +0000 Subject: - added webcam support - faster program start - faster sorting (mergesort) - sync lyrics to music - some new backgrounds and credits graphics (thx to MezzoX) - own thread for video decoding - finished 6-Player-on-one-screen-mode - changqed player-colors - fixed some bugs... git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2637 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMergeSort.pas | 101 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 Game/Code/Classes/UMergeSort.pas (limited to 'Game/Code/Classes/UMergeSort.pas') diff --git a/Game/Code/Classes/UMergeSort.pas b/Game/Code/Classes/UMergeSort.pas new file mode 100644 index 00000000..8a0aa124 --- /dev/null +++ b/Game/Code/Classes/UMergeSort.pas @@ -0,0 +1,101 @@ +unit UMergeSort; + +interface + +type + TDirection = (dSourceSource, dSourceTemp, dTempTemp, dTempSource); + + TCompareProc = function(TempIndex, SourceIndex: integer): boolean; cdecl; + PCompareProc = ^TCompareProc; + + TCopyProc = function(iSourceIndex, iDestIndex: integer; bDirection: TDirection): boolean; cdecl; + PCopyProc = ^TCopyProc; + + TMergeSorter = class + private + n: integer; + + aCallbackCompare: TCompareProc; + aCallbackCopy: TCopyProc; + + procedure MergeSort(lo, hi: integer); + procedure Merge(lo, m, hi: integer); + public + procedure Sort(n: integer; aCompare: TCompareProc; aCopy: TCopyProc); + end; + + +implementation + +procedure TMergeSorter.Sort(n: integer; aCompare: TCompareProc; aCopy: TCopyProc); +begin + Self.n := n; + Self.aCallbackCompare := aCompare; + Self.aCallbackCopy := aCopy; + MergeSort(0, n-1); +end; + +procedure TMergeSorter.MergeSort(lo, hi: integer); +var + m: integer; + +begin + if (lo