Если ваши исходные двадцать баллов не изменятся, вы получите лучшую эффективность, если вы отсортируете их O (n log n); тогда вы могли видеть, была ли каждая случайная точка в списке с помощью поиска O (log n).
Если ваш «оригинальный» список точек изменится (вставки / удаления), вы можете получить эквивалентную производительность с двоичным деревом.
НО: если количество точек, с которыми вы работаете, действительно так мало, как в вашем вопросе, ваш двойной цикл может быть просто самым быстрым методом! Алгоритмы с низкими кривыми Big-O будут быстрее, так как объем данных становится действительно большим, но часто за счет одноразового замедления (в вашем случае, сортировки) - и только с 15x20 точками данных ... Там не будет разницы воспринимаемой человеком; Вы могли бы видеть один, если вы синхронизируете это на своих системных часах. Или нет.
Надеюсь, это поможет!