2011-06-11 10 views
6

ツリーに保存されている出版物のリストから​​を計算する必要があります。h-インデックスの計算

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

私は3行目で停止しなければならないと問題3.戻る:私はそれがどのように見えるの引用

の位置番号のリストを取得漸減ためにツリーをトラバースされたのは何

与えられた例があり、この場合、4> 1しかし0> 3が偽であるため、2で停止します。代わりに1が返されます。なぜ私に説明できますか?私はそれが数学の質問のようなものだと知っていますが、その後、何かが深刻に間違っているなら、それを再実装する必要があります。

は、ここでは、コード

int index_h_calc(rbtree_node n, int *i){ 
    if (n == NULL) { 
     fputs("<empty tree>\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; 
    } 

答えて

0

これはあなたのnに相当ルビー、で例えば、github上のいくつかのソリューションを持っているがcitePagesあるとh-index計算

function h_index(){ 
     var hArray = new Array(); 
     var x = 0; 
     for(var i = 0; i < citePages.length; i++){ 
      var citeArray = citePages[i];   
      for(var j = 0; j < citeArray.length; j++){ 
       // The multiplication by one is a hack to convert the string type into a numerical type 
       hArray[x++] = citeArray[j]*1; 
      } 
     } 
     hArray.sort(sortNumber); 
     //alert(hArray); 
     for(var i = 0; i < hArray.length; i++){ 
      if(i > hArray[i]){ 
       return hArray[i-1]; 
      } 
     } 
    } 

前の関数である - これは提供していない場合

function getCitationCount(responseText){ 
    if (responseText == null){ 
    _gel("sContent").innerHTML = "<i>Invalid data.</i>"; 
      alert("There is no data."); 
     return; 
     } 

var cite_exists = 1; 
var cite_str_len = 14; 
var len_of_Cite_by_str = 9; 
var citeArray = new Array(); 
for(var i = 0; cite_exists > 0; i++) 
    { 
    cite_exists = responseText.search('Cited by'); 
    if(cite_exists == -1){ 
     //alert("No more citations for given Author!"); 
     //return; 
    }else{ 
     var tmp_string = responseText.substr(cite_exists, cite_str_len); 
     var end = (tmp_string.indexOf("<")-len_of_Cite_by_str); 
     citeArray[i] = tmp_string.substr(len_of_Cite_by_str, end); 
     publications++; 
     responseText = responseText.substr(cite_exists+cite_str_len, responseText.length); 
    } 
} 
return citeArray; 
} 

問題を検証する必要があります - 実際にはサンプルデータが必要です。たとえば、典型的なデータの例は、数学的なrコード化された質問よりも速く、人口が多い複雑なデータ構造でしかテストできません。

0

はおそらく、私はいくつかの微妙に欠けているが、ちょうど行番号から1を減算する答えではないのですか?つまり、iが行番号で、nが引用の数である場合は、n < iの行が見つかるまでツリーをトラバースし、hインデックスをi - 1として返します。

+0

... "h-indexを* n * - 1として返します。"さもなければそれは私の右に聞こえます... – Dmitri

+0

@Dmitri:いいえ、それは 'i - 1'でなければなりません。 OTの最初の例を考えてみましょう.4行目( '0 <4'のため)で停止し、' 4 - 1 = 3'のh-インデックスを返します。 2番目の例では、2行目で停止し、1を返します。 – deprecated

+0

おっと...何らかの理由で私が「n」と「i」を後ろ向きにしていると書いたとき。 – Dmitri

関連する問題