给定固定数量的键或值(存储在数组或某些数据结构中)和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)
我们可以看到水平有所下降.
那么是否有一种特定的方法来确定可以减少空间消耗的插入顺序?
我知道b + tree中存在批量加载.我只是想知道B-Tree中是否有任何批量加载算法.例如,给定一个数据数组,创建B树的最佳方法是什么?
我有多个相同大小的TextBrowser框重叠,我需要在不同的按钮点击上显示不同的TextBrowsers.有没有办法可以在不同的按钮点击上更改TextBrowser的可见性?Plz帮助我.谢谢.
我想使用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)
请帮忙
在c ++函数调用中,参数被复制到相应的参数中.这是初始化还是分配?
我正在使用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) 在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++解释任何编译器相关的问题.