#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