2

基本的に、この return -1 は何をしますか?

例:

int linear[] = {4, 21, 36, 14, 66, 91, 8, 22, 7, 81, 77, 10};
int key = 77;
for (int i = 0; i < linear.length; i++){
  if (linear[i] > key)
    return -1; //here
  else if (linear[i] == key)
    return i;
}
  • return 1 と return 0 をよく理解しています。しかし、-1 を返しますか?

  • 質問が次のように聞こえる場合:

与えられたコードに基づいて線形探索を解く方法を示しますか?

4

5 に答える 5

7

この場合、linear[i] がキーよりも小さいことを示しています。

場合によっては、キーが見つからないことを示していることもあります。

これは広く使われている規則です (そのような場合は -1 を返すことを意味します)。

于 2014-01-03T14:43:43.007 に答える
6

この関数は、ソートされた配列を取得し、配列内に見つかった場合は特定のキーのインデックスを返し、配列-1内に一致する要素がない場合は返すことを意図していると思います。

編集:混乱を避けるために-あなたが示す例でlinearはソートされていません。これは、私が上で説明したことをしないことを意味します。がソートされていない場合linear、関数は次のことを行います。

  • linearの前のすべての要素linearが厳密に よりも小さく、keyに等しい要素が にある場合、key関数はそのインデックスを返します。
  • それ以外の場合、関数よりも大きい要素がある場合key、関数は を返し-1ます。
  • それ以外の場合、提供するコード スニペットで戻り値が定義されていません。
于 2014-01-03T14:45:28.780 に答える