自定義高效率的數值管理函式

引入: 自定義

 

Castle(主要數值, 下限, 上限),當主要數值超出下限則傳回下限,超出上限則傳回上限,否則傳回本身。

]Function Castle(ByVal Main As Long, ByVal Least As Long, ByVal Most As Long) As Long

]If (Most < Least) Then

]Return 0

]End If

]If (Main < Least) Then

]Return Least

]End If

]If (Main > Most) Then

]Return Most

]End If

]Return Main

]End Function

 

Empire(新數值, 下限, 上限),將原本上下限範圍與以新數值建立的範圍比較,選擇大的那一個。當新數值修改了上限,傳回1,當新數值修改了下限,傳回-1,否則傳回0。

]Function Empire(ByVal NewNum As Long, ByRef Least As Long, ByRef Most As Long) As Short

]If (Most < Least) Then

]Return 0

]End If

]If (NewNum < Least) Then

]Least = NewNum

]Return -1

]End If

]If (NewNum > Most) Then

]Most = NewNum

]Return 1

]End If

]Return 0

]End Function

 

Sort(陣列資料),把凌亂的陣列依據數值由小到大,或是字串ASCII 由小到大排列。

]Function Sort(ByVal Origin As Array) As Array

]If (Origin Is Nothing) Then

]Return Nothing

]End If

]Dim Type As String = Nothing

]If ((TypeOf Origin(LBound(Origin)) Is Short) Or (TypeOf Origin(LBound(Origin)) Is Integer) Or (TypeOf Origin(LBound(Origin)) Is Long) Or (TypeOf Origin(LBound(Origin)) Is Double) Or (TypeOf Origin(LBound(Origin)) Is Single)) Then

]Type = "Integer"

]End If

]If ((TypeOf Origin(LBound(Origin)) Is String) Or (TypeOf Origin(LBound(Origin)) Is Char)) Then

]Type = "String"

]End If

]If (TypeOf Origin(LBound(Origin)) Is Date) Then

]Type = "Date"

]End If

]Select Case Type

]Case "Integer"

]Dim OverSort As Boolean = False

]Do Until OverSort

]OverSort = True

]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1

]If (Origin(i1) > Origin(i1 + 1)) Then

]Dim Temp As Object = Origin(i1)

]Origin(i1) = Origin(i1 + 1)

]Origin(i1 + 1) = Temp

]OverSort = False

]End If

]Next

]Loop

]Return Origin

]Case "String"

]Dim OverSort As Boolean = False

]Do Until OverSort

]OverSort = True

]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1

]Dim CharArray1 As Char() = Origin(i1).ToCharArray

]Dim CharArray2 As Char() = Origin(i1 + 1).ToCharArray

]For i2 As Integer = Which(">", New Integer() {LBound(CharArray1), LBound(CharArray2)}) To Which("<", New Integer() {UBound(CharArray1), LBound(CharArray2)}) Step 1

]Select Case Stick(AscW(CharArray2(i2)), AscW(CharArray1(i2)))

]Case 1

]Dim Temp As Object = Origin(i1)

]Origin(i1) = Origin(i1 + 1)

]Origin(i1 + 1) = Temp

]OverSort = False

]Exit For

]Case -1

]Exit For

]End Select

]Next

]Next

]Loop

]Return Origin

]Case "Date"

]Dim OverSort As Boolean = False

]Do Until OverSort

]OverSort = True

]For i1 As Integer = LBound(Origin) To UBound(Origin) - 1 Step 1

]If (Origin(i1).Ticks > Origin(i1 + 1).Ticks) Then

]Dim Temp As Date = Origin(i1)

]Origin(i1) = Origin(i1 + 1)

]Origin(i1 + 1) = Temp

]OverSort = False

]End If

]Next

]Loop

]Return Origin

]End Select

]Return Origin

]End Function

文章標籤
全站熱搜
創作者介紹
創作者 GPhettoH 的頭像
GPhettoH

歇息,等待明日的天空

GPhettoH 發表在 痞客邦 留言(0) 人氣(16)