%%QuickInterview
%
%%Question
Input [num]
FilteredMedian [num]
%
%%Variable
FilteredMedian = topQuartilMedian(Input[])
%
%%Function
function topQuartilMedian(history) {
var sortedHistory = sort(valueHistory(history));
var topQuartil = sortedHistory.slice(history.length * 0.75);
var medianIndex = topQuartil.length % 2 == 0 ? (topQuartil.length / 2) - 1 : (topQuartil.length - 1) / 2
return topQuartil[medianIndex];
}
function valueHistory(history) {
var valueHistory = [];
for (var i = 0; i < history.length; i++) {
valueHistory.push(history[i].value);
}
return valueHistory;
}
function sort(history) {
return quickSort(history, 0, history.length - 1);
}
function quickSort(arr, left, right) {
var i = left;
var j = right;
var tmp;
pivotidx = (left + right) / 2;
var pivot = arr[pivotidx.toFixed()];
while (i <= j) {
while (parseInt(arr[i]) < pivot)
i++;
while (parseInt(arr[j]) > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
return arr;
}
@export: topQuartilMedian(HISTORY_NUMBER) -> NUMBER
%
%%KnowledgeBase
DemoKB
%
%%Package filteredMedian2