小编nbb*_*bbk的帖子

您应该以什么顺序将一组已知的密钥插入B树以获得最小高度?

给定固定数量的键或值(存储在数组或某些数据结构中)和b-tree的顺序,我们可以确定插入键的顺序,这将生成一个节省空间的b树.

为了说明,考虑3阶的b树.让密钥为{1,2,3,4,5,6,7}.按以下顺序将元素插入树中

for(int i=1 ;i<8; ++i)
{
 tree.push(i);  
}
Run Code Online (Sandbox Code Playgroud)

会像这样创建一棵树

        4
     2      6
   1  3   5   7
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/B-tree

但是以这种方式插入元素

flag = true;
for(int i=1,j=7; i<8; ++i,--j)
{
    if(flag)
    {
        tree.push(i);
        flag = false;
    }
    else
    {
        tree.push(j);
        flag = true;
    }   
}
Run Code Online (Sandbox Code Playgroud)

创建一个这样的树

    3 5
1 2  4  6 7
Run Code Online (Sandbox Code Playgroud)

我们可以看到水平有所下降.

那么是否有一种特定的方法来确定可以减少空间消耗的插入顺序?

algorithm b-tree data-structures

23
推荐指数
3
解决办法
6007
查看次数

在B-Tree中是否有任何批量加载算法?

我知道b + tree中存在批量加载.我只是想知道B-Tree中是否有任何批量加载算法.例如,给定一个数据数组,创建B树的最佳方法是什么?

c++ algorithm b-tree

7
推荐指数
1
解决办法
2275
查看次数

如何根据信号更改pyqt中重叠小部件的可见性

我有多个相同大小的TextBrowser框重叠,我需要在不同的按钮点击上显示不同的TextBrowsers.有没有办法可以在不同的按钮点击上更改TextBrowser的可见性?Plz帮助我.谢谢.

qwidget pyqt4

5
推荐指数
1
解决办法
8080
查看次数

如何在rails上的ruby中编写嵌套查询?

我想使用where方法为以下内容编写查询

SELECT * FROM videos 
WHERE  'privacy' = 'public' OR 
       (privacy = 'private' AND 
       id IN (SELECT vid 
              FROM vid_ads
              WHERE 'aid'=#{current_id}))
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下查询但最终出现语法错误

Video.where("privacy = 'public' OR 
            (privacy = 'private' AND id = ?)",
            VidAd.where(:aid => current_id).select("vid"))
Run Code Online (Sandbox Code Playgroud)

请帮忙

mysql where-in nested-query ruby-on-rails-3

5
推荐指数
1
解决办法
1233
查看次数

在c ++中调用fn时,args被复制到相应的参数中.这是初始化还是分配?

在c ++函数调用中,参数被复制到相应的参数中.这是初始化还是分配?

c++ function-call

4
推荐指数
1
解决办法
115
查看次数

如何动态添加文本框而不会丢失先前文本框的值?

我正在使用innerHTML 动态添加文本框。代码示例如下:

<html>
<head>
  <script type="text/javascript" >
  var i=0;
  function add()
  {
    var tag = "<input type='text' name='" + i + "' /> <br/>";
    document.getElementById("y").innerHTML += tag;
    i++;
  }
  </script>
</head>

<body>
  <input type="button" id="x" value="Add" onclick="add();" />
  <div id="y"></div>
</body>

</html
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以在添加新文本框时动态添加文本框而不会丢失先前文本框的值?
已经发布了类似的问题,但没有答案:(

如果我想在这种情况下添加文本框怎么办:

function add() {
   var element='<li class="ie7fix" style="width:620px;"><div class="m_elementwrapper" style="float:left;"><label class="fieldlabel" style="width:106px;float:left;padding-top:3px;" for="p1f4"><span><span class="pspan arial" style="text-align:right;font-size:14px;"><span class="ispan" xml:space="preserve"></span></span></span></label><div style="float:left;width:475px;" class="m_elementwrapper"><input type="text" style="font-family:Arial, Helvetica, sans-serif;font-size:14px;width:244px;max-width:244px;" name="' + i + '"  class="fieldcontent"><div class="fielderror"></div></div></div><div style="clear:both;font-size:0;"></div></li>';
   document.getElementById("addskills").innerHTML += element;
   i++; …
Run Code Online (Sandbox Code Playgroud)

html javascript textbox

2
推荐指数
1
解决办法
4909
查看次数

在C和C++中传递2d数组的比较

在C.

void foo(int size ,int a[][size])
{
    printf("%d\n", a[0][0]);
}
int main(int argc, char const *argv[])
{
    int a[5][5] = {0};
    foo(5, a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

工作良好

但在C++中也一样

void foo(int size, int a[][size])
{
    cout << a[0][0] << endl;
}
int main(int argc, char const *argv[])
{
    int a[5][5] = {0};
    foo(5, a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

不起作用.它给出了两个错误:

 error: use of parameter ‘size’ outside function body
 In function ‘void foo(...)’:
 error: ‘a’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

谁能解释为什么会这样.还请用C或C++解释任何编译器相关的问题.

c c++ parameter-passing multidimensional-array

2
推荐指数
1
解决办法
181
查看次数