我有一个纬度和经度阵列。任务是找到所有坐标的5个最近坐标,而不是每次都遍历所有坐标。
答案 0 :(得分:3)
有几种解决方案取决于您的数据(您没有告知任何内容)以及您希望的确切程度。
void printSTDLines(char *lines)
{
int lineCount = strlen(lines), newLineCount = 0;
while(newLineCount < 10)
{
if(lines[lineCount] == '\n')
{
newLineCount++;
}
lineCount--;
}
int readSize = strlen(lines) - lineCount;
for(lineCount = readSize; lineCount < sizeof(lines); lineCount++)
{
write(STDOUT_FILENO, &lines[lineCount], 1);
}
}
运行时间。请查看more explanation的答案。O(n * k^2)
因此,您可以看到此任务的复杂度可能高于O(n log n )
。
所有方法都描述了如何找到与您要搜索的点最近的点。很明显,在找到最近的点之后,你可以删除它并找到另一个最近的点,依此类推,直到找到5点最近的点为止。