Для сортировки небольших количеств чисел требуется простой алгоритм, поскольку сложность добавляет дополнительные издержки.
Самый эффективный способ сортировки, например, четырех элементов - это распутать алгоритм сортировки для линейных сравнений, тем самым устраняя все накладные расходы:
function sort(i,j,k,l) {
if (i < j) {
if (j < k) {
if (k < l) return [i,j,k,l];
if (j < l) return [i,j,l,k];
if (i < l) return [i,l,j,k];
return [l,i,j,k];
} else if (i < k) {
if (j < l) return [i,k,j,l];
if (k < l) return [i,k,l,j];
if (i < l) return [i,l,k,j];
return [l,i,k,j];
} else {
if (j < l) return [k,i,j,l];
if (i < l) return [k,i,l,j];
if (k < l) return [k,l,i,j];
return [l,k,i,j];
}
} else {
if (i < k) {
if (k < l) return [j,i,k,l];
if (i < l) return [j,i,l,k];
if (j < l) return [j,l,i,k];
return [l,j,i,k];
} else if (j < k) {
if (i < l) return [j,k,i,l];
if (k < l) return [j,k,l,i];
if (j < l) return [j,l,k,i];
return [l,j,k,i];
} else {
if (i < l) return [k,j,i,l];
if (j < l) return [k,j,l,i];
if (k < l) return [k,l,j,i];
return [l,k,j,i];
}
}
}
Однако, код растет с каждым добавляемым вами дополнительным элементом. Добавление пятого элемента делает код примерно в четыре раза больше. В восьми элементах это будет примерно 30000 строк, поэтому, хотя это все еще наиболее эффективно, это много кода, и вам нужно написать программу, которая пишет код, чтобы получить его правильно.