Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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/0/search/2.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
Algorithm 求最小元素的递归算法_Algorithm_Search_Recursion_Binary Tree - Fatal编程技术网

Algorithm 求最小元素的递归算法

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

我想写一个递归算法来寻找最小的元素。 我画了一个二叉树,其中叶表示元素,内部节点是比较后最小的元素

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]=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的大小一直在缩小,并表示下一级别的所有数字,但它不是递归的。