public Page add(double x, int w, List<Double> history) {
for (int i = 0; i < active; i++) {
if (centroids[i] >= x) {
if (active >= pageSize) {
Page newPage = split();
if (i < pageSize / 2) {
addAt(i, x, w, history);
} else {
newPage.addAt(i - pageSize / 2, x, w, history);
}
return newPage;
} else {
addAt(i, x, w, history);
return null;
}
}
}
if (active >= pageSize) {
Page newPage = split();
newPage.addAt(newPage.active, x, w, history);
return newPage;
} else {
addAt(active, x, w, history);
return null;
}
}