Hallo AutoIt Com.
Heute habe ich mich mit dem Plane-Sweeping Algorithmusentwurfsverfahren auseinandergesetzt und versucht _ArrayMax() nachzucoden.
Noch fehlen die Optionen: Alphanumerisch, Start, End.
Zusätzlich hat es die Funktion Type - Herausgabe des Größten / Kleinsten Wertes.
Insgesamt ist die Funktion schneller als die Funktion _arraymax(), ein Beispiel dafür:
Spoiler anzeigen
;Sweep Verfahren
;Methode: Scanne ALLES und trage dann Ergebnis aus
#include <Array.au3>
#Region Variables
Global $RArray = _RandomValue(1000)
Global $EndValue
#EndRegion Variables
#Region Returns
$STimer = TimerInit()
$EndValue = _SweepArray($RArray)
$STimer = Round(TimerDiff($STimer), 4)
$ATimer = TimerInit()
$AEndValue = _ArrayMax($RArray)
$ATimer = Round(TimerDiff($ATimer), 4)
MsgBox(0, "Auswertung", "Array Max: " & $AEndValue & @CRLF & "Array Zeit: " & $ATimer & @CRLF & @CRLF & "PS Max: " & $EndValue & @CRLF & "PS Zeit: " & $STimer)
#EndRegion Returns
#Region Functions
Func _SweepArray($Array, $Type = True)
If Not IsArray($Array) Then Return False
Local $Wert = $Array[0]
If $Type = True Then
For $i = 0 To UBound($Array) - 1
If $Array[$i] > $Wert Then $Wert = $Array[$i]
Next
ElseIf $Type = False Then
For $i = 0 To UBound($Array) - 1
If $Array[$i] < $Wert Then $Wert = $Array[$i]
Next
EndIf
Return $Wert
EndFunc ;==>_SweepArray
#cs
;$Array = Array with Values
;$Type = True - Return highest Value
; False - Return lowest Value
#ce
Func _RandomValue($iAnzahl, $iVon = 1, $iBis = 10000) ;Return Array
If $iAnzahl > $iBis - $iVon Then $iBis = $iVon + $iAnzahl
Local $oRandom = ObjCreate("Scripting.Dictionary")
For $i = 1 To $iAnzahl
Do
$tmp = Random($iVon, $iBis, 1)
Until Not $oRandom.Exists($tmp)
$oRandom.Add($tmp, $i)
Next
$colRandom = $oRandom.Keys
Local $aRandom[$iAnzahl], $i = 0
For $Random In $colRandom
$aRandom[$i] = $Random
$i += 1
Next
Return $aRandom
EndFunc ;==>_RandomValue
#EndRegion Functions
Die Funktion selber:
[autoit]
; #FUNCTION# ===================================================================
; Name ..........: _SweepArray
; Description ...: Returns highest Number of Array
; AutoIt Version : -
; Syntax ........: _SweepArray($Array [,$Type = True])
; Parameter(s): .: $Array -
; Return Value ..: Success - Highest / Lowest value of Array.
; Failure - False
; Author(s) .....: Mattthias (AutoIt.de)
; Date ..........: Sunday 27.02.2011 21:30
; Link ..........:
; Related .......:
; Example .......: Yes
; ==============================================================================
Func _SweepArray($Array, $Type = True)
If Not IsArray($Array) Then Return False
Local $Wert = $Array[0]
If $Type = True Then
For $i = 0 To UBound($Array) - 1
If $Array[$i] > $Wert Then $Wert = $Array[$i]
Next
ElseIf $Type = False Then
For $i = 0 To UBound($Array) - 1
If $Array[$i] < $Wert Then $Wert = $Array[$i]
Next
EndIf
Return $Wert
EndFunc ;==>_SweepArray
Demnächst sollte noch kommen: Alphanumerisch, Start, End
MfG