在BST-C中查找最大元素的索引

在BST-C中查找最大元素的索引,c,binary-search-tree,C,Binary Search Tree,我得到了一个赋值-创建一个数组并找到数组中最大元素的索引。 我需要使用Log(N)运行时来实现它,所以我创建了一个二叉树函数,它返回最大元素的值。 我正在尝试更改为,这样它就可以返回最大元素的索引,而到目前为止没有运气 谢谢你的帮助 代码是: void max_value(int *a, int i, int n) { int j, temp; temp = a[i]; j = 2 * i; while (j <= n) { if

我得到了一个赋值-创建一个数组并找到数组中最大元素的索引。 我需要使用Log(N)运行时来实现它,所以我创建了一个二叉树函数,它返回最大元素的值。 我正在尝试更改为,这样它就可以返回最大元素的索引,而到目前为止没有运气

谢谢你的帮助

代码是:

void max_value(int *a, int i, int n)
{

    int j, temp;
    temp = a[i];
    j = 2 * i;
    while (j <= n)
    {
        if (j < n && a[j + 1] > a[j])
            j = j + 1;
        if (temp > a[j])
            break;
        else if (temp <= a[j])
        {
            a[j / 2] = a[j];
            j = 2 * j;
        }
    }
    a[j / 2] = temp;
    return;
}
int Array_Search(int *a, int n) {


    int i;
    for (i = n / 2; i >= 1; i--)
    {
        max_value(a, i, n);
    }
    return a[1];

}
void max_值(int*a,int i,int n)
{
int j,温度;
温度=a[i];
j=2*i;
while(ja[j])
j=j+1;
如果(温度>a[j])
打破
否则,如果(温度=1;i--)
{
最大_值(a,i,n);
}
返回[1];
}

你试过了吗?@Neil没有,我真的不知道heap是什么。现在我来读一下,你可以把它实现为一种完整的二叉树,它隐式地存在于数组中,就像heapsort中使用的那样。创建数组并查找数组中最大元素的索引。创建数组的过程需要O(n)个时间。如果在该过程中跟踪最大元素的索引,则可以在完成数组后的O(1)时间内报告最大元素的索引。换言之,请发表一篇文章。这里有一篇合理的文章将有帮助