📄 mdian2.txt
字号:
Sub MDIAN2(X(), N, XMED)
BIG = 1E+30
AFAC = 1.5
AMP = 1.5
A = 0.5 * (X(1) + X(N))
EPS = Abs(X(N) - X(1))
AP = BIG
AM = -BIG
1 Sum = 0#
SUMX = 0#
NP = 0
NM = 0
XP = BIG
XM = -BIG
For J = 1 To N
XX = X(J)
If XX <> A Then
If XX > A Then
NP = NP + 1
If XX < XP Then XP = XX
ElseIf XX < A Then
NM = NM + 1
If XX > XM Then XM = XX
End If
DUM = 1# / (EPS + Abs(XX - A))
Sum = Sum + DUM
SUMX = SUMX + XX * DUM
End If
Next J
If NP - NM >= 2 Then
AM = A
If SUMX / Sum - A < 0 Then
BBB = 0
Else
BBB = SUMX / Sum - A
End If
AA = XP + BBB * AMP
If AA > AP Then AA = 0.5 * (A + AP)
EPS = AFAC * Abs(AA - A)
A = AA
GoTo 1
ElseIf NM - NP >= 2 Then
AP = A
If SUMX / Sum - A < 0 Then
BBB = SUMX / Sum - A
Else
BBB = 0
End If
AA = XM + BBB * AMP
If AA < AM Then AA = 0.5 * (A + AM)
EPS = AFAC * Abs(AA - A)
A = AA
GoTo 1
Else
If (N Mod 2) = 0 Then
If NP = NM Then
XMED = 0.5 * (XP + XM)
ElseIf NP > NM Then
XMED = 0.5 * (A + XP)
Else
XMED = 0.5 * (XM + A)
End If
Else
If NP = NM Then
XMED = A
ElseIf NP > NM Then
XMED = XP
Else
XMED = XM
End If
End If
End If
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -