Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java B-树修正_Java_Algorithm_Mergesort_B Tree - Fatal编程技术网

Java B-树修正

Java B-树修正,java,algorithm,mergesort,b-tree,Java,Algorithm,Mergesort,B Tree,如果我们正在寻找线交点(仅水平线和垂直线),并且我们有n条线,其中一半是垂直的,没有交点,那么 使用mergesort对y值上的线端点列表进行排序需要N log N 我们的数据结构的每次插入、删除和搜索(假设它是b树)都将

如果我们正在寻找线交点(仅水平线和垂直线),并且我们有n条线,其中一半是垂直的,没有交点,那么

使用mergesort对y值上的线端点列表进行排序需要N log N

我们的数据结构的每次插入、删除和搜索(假设它是b树)都将 因此,总搜索时间将为N log N

我在这里遗漏了什么,如果使用mergesort进行排序的时间为N log N,而插入和删除的时间为
感谢

big-O符号描述了算法的渐近行为。也就是说,它描述了当N趋于无穷大时算法的行为。算法中占用N个logn时间的部分将使占用logn时间的部分相形见绌。当N变大时,log N部分的重要性相对减少为零。

我怀疑您的导师指的是的问题,它比简单地对段进行排序更复杂。您会注意到,本文引用了Shamos–Hoey算法,该算法使用二叉树存储线段并有效地检测交点

Michael是正确的,因为使用二叉树对于一次性的线段毫无意义。然而,在检测交叉口的情况下,排序后再进行搜索将产生二次性能,并且不是最佳方法,因此,为什么测线算法使用二叉树

例如,假设沿x轴从左到右对线段进行排序。然后,一个简单的检测算法将类似于:

for (int i=0; i<segs.length - 1; ++i) {
  boolean searching = true;

  for (int j=i+1; j<segs.length && searching; ++j) {
     if (segments overlap on x-axis) {
       // Check for intersection.
     } else {
       // No overlap so terminate inner loop early.
       // This is the advantage of having a sorted list.
       searching = false;
     }
  }
}

用于(int i=0;um…你到底在做什么?我不知道插入b树和从b树中删除与合并排序有什么关系。正在尝试查找行的位置intersect@stan:是的,那么为什么你需要在b-树中插入和删除元素呢?不知道,这只是老师建议的方式,我不确定tbh,为什么我在这里请求修订帮助:D我们练习过的代码我可以很容易记住,但是这些幻灯片上我们没有练习过的内容很难修改,而且我可能无法在编程方面在代码中复制这个问题,因此我无法练习:S@Michael当前位置我在猜,但我怀疑这个问题是指为了检测线段之间的交点,许多交点算法都使用B-树。维基百科的文章提到了二叉搜索树,而不是B-树。这一点很好。当我指二叉树时,我也犯了同样的错误——我会编辑我的答案。