Вычисление h-индекса

Мне нужно вычислить h-index из списка публикаций, которые я сохранил в дереве.

Я обошел дерево в убывающем порядке, получив список позиций-номеров цитат

, это выглядит так:

line 1 10
line 2 5
line 3 4
line 4 0

Я должен остановиться на строке 3 и вернуть 3. Проблема с приводятся примеры, и в этом случае

line 1 4
line 2 0
line 3 0

он останавливается на 2, потому что 4> 1, но 0> 3 ложно. Вместо этого он должен вернуть 1. Вы можете мне объяснить почему? Я знаю, что это больше похоже на математический вопрос, но после этого мне, возможно, придется заново реализовать его, если что-то сильно не так.

Вот код

  int index_h_calc(rbtree_node n, int *i){
    if (n == NULL) {
        fputs("\n", stdout);
        return 0;
    }
    if (n->right != NULL)
      index_h_calc(n->right,i);


    graduat *grad;
    grad=n->value;

    if(DEBUG)
      printf("linea %d %d %s\n ",*i,(int)grad->tot,grad->name);

    if(*i+1>=(int)grad->tot) {
      return *i;
    } else
      *i+=1;

    if (n->left != NULL)
      index_h_calc(n->left,i);

    return *i;
  }

7
задан Julien 7 July 2011 в 03:05
поделиться