#include <array.au3>
#include <date.au3>
#include <arraySort2D_MC.au3>

Global $array[10000][3]
$array[0][0] = "Text"
$array[0][1] = "Zahl"
$array[0][2] = "Datum"
For $i = 1 To 9999
	;rein Ascii
	$array[$i][0] &= Chr(Random(65, 90, 1))
	For $j = 1 To 9
		$array[$i][0] &= Chr(Random(97, 122, 1))
	Next
	;Zahl
	$array[$i][1] = Random(1, 999, 1)
	For $j = 1 To Random(0, 6, 1)
		if $j = 1 Then $array[$i][1] &= ","
		$array[$i][1] &= Chr(Random(48, 57, 1))
	Next
	;Datum
	$array[$i][2] = Random(1, 31, 1) & "." & Random(1, 12, 1) & "." & Random(1945, 1994, 1)
Next

_ArrayDisplay($array, "Unsortiert")

;Numerische Sortierung
$bench_start = TimerInit()
;Func _arraySort2D_MC(ByRef $avArray, $ColOrder, $iStart=0,$iEnd=0,$iDesc=0,$bDelDuplictes=False)
_arraySort2D_MC($array, "1%N|2%D|0", 1)
$bench_end = Round(TimerDiff($bench_start), 2)
ConsoleWrite("Laufzeit _arraySort2D_MC: " & $bench_end & " ms!" & @CRLF)
_ArrayDisplay($array, "sortiert nach Col 1 als Zahl (1%N|2%D|0|)")

;sortierung nch Datum JJJJ/MM/TT
$bench_start = TimerInit()
_arraySort2D_MC($array, "2%D|0|1%N", 1)
$bench_end = Round(TimerDiff($bench_start), 2)
ConsoleWrite("Laufzeit _arraySort2D_MC: " & $bench_end & " ms!" & @CRLF)
_ArrayDisplay($array, "sortiert nach Col 2 als Datum (2%D|0|1%N)")

;Sortierung nach Geburtstag MM/TT/JJJJ
$bench_start = TimerInit()
_arraySort2D_MC($array, "2%G|0|1%N", 1)
$bench_end = Round(TimerDiff($bench_start), 2)
ConsoleWrite("Laufzeit _arraySort2D_MC: " & $bench_end & " ms!" & @CRLF)
_ArrayDisplay($array, "sortiert nach Col 2 als Geburtstag (2%G|0|1%N)")

;und jetzt doppelte Zeilen erzeugen
For $i = 1 To 99 Step 2
	For $j = 0 To 2
		$array[$i][$j] = $array[$i + 1][$j]
	Next
Next
;normale Sortierung absteigend doppelte Zeilen verhindern
$bench_start = TimerInit()
_arraySort2D_MC($array, "0|1%N|2%D", 1, 0, 1, True)
$bench_end = Round(TimerDiff($bench_start), 2)
ConsoleWrite("Laufzeit _arraySort2D_MC: " & $bench_end & " ms!" & @CRLF)
_ArrayDisplay($array, "sortiert nach Col 0 als Text absteigend doppelte Zeilen werden gelöscht (0|1%N|2%D|")
