C++は監視笛付きの逐次検索アルゴリズムを実現する。


監視哨戒はしばしばプログラム内の変数です。数字を並べ替えると、その変数は普通数値型変数です。変数の割当値はホイッスルに相当します。並べ替えられた数列の中にホイッスルと同じ値が現れたり、既定の関係がある場合は、順序付けを中止したり、次の順序付けを行うなどの操作をします。
例:
順序検索のアルゴリズムは以下の通りです。

int Search_Sequen(SSTable ST,KeyType key){
//    ST           Key     ,
//   ,             ,   -1.
ST.element[ST.length].key=key; //     
i=0;
while(ST.element[i].key!=key) i++;
if(i<ST.length)
return i;
else
return -1;
}
本文
以前、牛客ネットで練習問題を作って発見したこの独特な順番を調べてみました。初めて「監視哨」という言葉を聞きました。調べてみました。
具体的には、配列の0番目の位置を空にし、検索時に検索するkeyを監視哨戒として挿入します。
このような利点は、ループごとに検索が終了するかどうかを確認しなくてもいいです。元素の比較回数を減らしました。
最後の戻り値は元素の下付きか、配列の0番目か(この場合は監視哨戒になります)
以下は私のコードです。

#include <iostream> 
using namespace std;

template<class T>
int linear_search(T& arr,int key)
{
 int length = sizeof(arr) / sizeof(arr[0]);
 int i = length;
 arr[0] = key;
 while (arr[i] != key)
 {
 i--;
 }
 return i;
}

int main()
{
 int array[] = { 0, 7,9,10,11,15 };
 int len = sizeof(array) / sizeof(array[0]);
 cout << linear_search(array, 10);
 return 0;
}
ちなみに、vs 2019には一つが現れます。
error C 2760:構文エラー:意外なトークン“識別子”、予想されるトークンは“;”
具体的な原理はよく分かりません。解決方法を示します。
項目->属性->C/C+->>言語->該当モード->いいえ
最後に自分に目覚めれば、配列は関数パラメータとして導入された配列の最初のポインタであり、配列の他の属性はありません。
したがって、関数内で配列の長さを求めるには、参照とテンプレートの形で配列自体に入るしかないので、配列長はsizef()で取得できます。
締め括りをつける
ここでC++について、監視笛付きの逐次検索を実現する文章を紹介します。これに関連して、c++監視哨戒順の検索内容は以前の文章を検索してください。または、下記の関連記事を引き続き閲覧してください。これからもよろしくお願いします。