Как показано на рисунке, у меня есть следующие структуры для хранения набора шкафов "Кривые" в "Срез".«Кривая» состоит из «узлов», реализованных в виде двусвязного списка.
Вот код псевдо:
class Slice {
List<Curve*> curves;
}
class Curve {
int objectID;
Node *headNode;
}
class Node {
double x,
double y,
Node *next;
Node *previous
}
Я рендеринг этой структуры с использованием методов рисования QT, и я хочучтобы выбрать узел, ближайший к точке мыши.
То, что я делаю,
a). Получите каждую «Кривую» в «Срезе»
b). Идитечерез все узлы в выбранной кривой и вычислите расстояние от точки мыши до каждой точки и сравните.
Мои вопросы:
1) если мы возьмем число кривой "c" и средние узлыравен «n», сложность алгоритма равна O (n * c).Является ли этот анализ правильным?
2) Есть ли способ улучшить алгоритм, сделать его быстрее?Используя двоичное дерево, HashTable ..etc?