Algorithm 求最小元素的递归算法
我想写一个递归算法来寻找最小的元素。 我画了一个二叉树,其中叶表示元素,内部节点是比较后最小的元素 algo的输入为: 53191987610 二叉树: 产出:1 我需要找到一个算法,以某种方式结合这个二叉树。首先比较一对元素,然后将问题简化为n/2,然后是n/4。。当n变为1时,我们得到了答案。伪代码:Algorithm 求最小元素的递归算法,algorithm,search,recursion,binary-tree,Algorithm,Search,Recursion,Binary Tree,我想写一个递归算法来寻找最小的元素。 我画了一个二叉树,其中叶表示元素,内部节点是比较后最小的元素 algo的输入为: 53191987610 二叉树: 产出:1 我需要找到一个算法,以某种方式结合这个二叉树。首先比较一对元素,然后将问题简化为n/2,然后是n/4。。当n变为1时,我们得到了答案。伪代码: mydata = [5 3 1 9 8 7 6 10]; n = 8; while n > 1 for ii = 2 to n Step 2 mydata[ii/2]=mi
mydata = [5 3 1 9 8 7 6 10];
n = 8;
while n > 1
for ii = 2 to n Step 2
mydata[ii/2]=min(mydata[ii-1],mydata[ii]);
next ii
n = n/2;
wend
下面是一个在树中查找最小值的函数:
function smallest(tree)
if isEmpty(tree)
return infinity
return min( tree.value,
smallest(tree.leftKid),
smallest(tree.rightKid) )
但我不明白你的问题。如果输入是数组的形式,则不需要构建树。只需遍历数组,两两比较值,每一步保持最小值,最后输出最小值。使用
设Mi,j表示子阵[i…j]的最小元素。那么Mi,j=minMi,k,Mk+1,j,如果i另外,您需要处理案例i=j 你的问题是什么?你试过什么?你的问题是。。。你已经试过了…使用非递归循环算法,我们可以很容易地找到最小的元素,但我想用递归算法找到最小的元素。你能描述一下递归算法是如何遍历你的树的吗?实际上没有递归,算法的工作原理应该和我展示的二叉树类似。刚才看到了你上面的评论。我猜这不是递归的…它的工作原理和你的二叉树一样,它比较对,然后沿着你的二叉树向上运行。。。mydata的大小一直在缩小,并表示下一级别的所有数字,但它不是递归的。