61 lines
1.7 KiB
Plaintext
61 lines
1.7 KiB
Plaintext
#define floor(x) ((x*2.0-0.5) Shr 1)
|
|
|
|
Sub rapidSort (array()As Single, l As Integer, r As Integer)
|
|
Dim As Integer n, wert, nptr, rep
|
|
Dim As Single arr, LoVal = array(l), HiVal = array(r)
|
|
For n = l To r
|
|
If LoVal > array(n) Then LoVal = array(n)
|
|
If HiVal < array(n) Then HiVal = array(n)
|
|
Next n
|
|
Redim SortArray(LoVal To HiVal) As Single
|
|
For n = l To r
|
|
wert = array(n)
|
|
SortArray(wert) += 1
|
|
Next n
|
|
nptr = l-1
|
|
For arr = LoVal To HiVal
|
|
rep = SortArray(arr)
|
|
For n = 1 To rep
|
|
nptr += 1
|
|
array(nptr) = arr
|
|
Next n
|
|
Next arr
|
|
Erase SortArray
|
|
End Sub
|
|
|
|
Function median(tbl() As Single, lo As Integer, hi As Integer) As Single
|
|
Dim As Integer l = hi-lo+1
|
|
Dim As Integer m = lo+floor(l/2)
|
|
|
|
If l Mod 2 = 1 Then Return tbl(m)
|
|
Return (tbl(m-1)+tbl(m))/2
|
|
End Function
|
|
|
|
Sub fivenum(tbl() As Single)
|
|
rapidSort(tbl(), Lbound(tbl), Ubound(tbl))
|
|
Dim As Integer l = Ubound(tbl)
|
|
Dim As Single m = floor(l/2) + (l Mod 2)
|
|
Dim As Single r1,r2,r3,r4,r5
|
|
|
|
r1 = tbl(1)
|
|
r2 = median(tbl(),1,m)
|
|
r3 = median(tbl(),1,l)
|
|
r4 = median(tbl(),m+1,l)
|
|
r5 = tbl(l)
|
|
|
|
Print "[" & r1; ","; r2; ","; r3; ","; r4; ", "; r5 & "]"
|
|
End Sub
|
|
|
|
Dim As Single x1(1 To ...) = {15, 6, 42, 41, 7, 36, 49, 40, 39, 47, 43}
|
|
Dim As Single x2(1 To ...) = {36, 40, 7, 39, 41, 15}
|
|
Dim As Single x3(1 To ...) = {_
|
|
0.14082834, 0.09748790, 1.73131507, 0.87636009, -1.95059594, _
|
|
0.73438555, -0.03035726, 1.46675970, -0.74621349, -0.72588772, _
|
|
0.63905160, 0.61501527, -0.98983780, -1.00447874, -0.62759469, _
|
|
0.66206163, 1.04312009, -0.10305385, 0.75775634, 0.32566578}
|
|
fivenum(x1())
|
|
fivenum(x2())
|
|
fivenum(x3())
|
|
|
|
Sleep
|