バイナリ検索〜特定ワードを私たちが読んだファイルに使用するように頼まれました。数字ではなく単語だけを使用してバイナリ検索を使用するにはどうすればよいですか?
私には分かりませんが、という単語ではなく、という単語を検索するときにバイナリ検索を使用する方法があります。
バイナリ検索〜特定ワードを私たちが読んだファイルに使用するように頼まれました。数字ではなく単語だけを使用してバイナリ検索を使用するにはどうすればよいですか?
私には分かりませんが、という単語ではなく、という単語を検索するときにバイナリ検索を使用する方法があります。
バイナリ検索は、ソート入力で動作します。値だけでなく、単語にもorderを定義することができます。
たとえば、lexicographical orderです。 Javaでは、これは自然順序のString
sとして実装されています。したがって、"text1".compareTo("text2")
を実行して注文を返します。バイナリサーチの
小さなイラスト:
ご覧のとおり、アルゴリズムで決定する唯一のものは、2つのオブジェクト間の順序です。たとえば、画像からは7 < 14
と7 > 6
です。このように、String
の場合も同様です。確かにのすべてあなたのためにはを定義します。 (150
以上)は、Javaで
実際には多くのクラス自然順序を実装するが、これらはインターフェースComparable
(documentation)の下に一覧表示され、それらはすべて意味のある順序とcompareTo
方法を提供します。
辞書で単語を検索すると思います。これはバイナリ検索の例です。
は例えば、「eunoia」を調べることができます:
このすべての作品辞書は整ったであるため、我々はすべてのAが第一の手紙であることに同意し、B等、第二であることを見てもう一つの方法は、アルファベットが同じものであるということです数字[0 - 25]とちょうど異なる名前である。 文字列ため
テキスト文書を検索するために文字列で文字列を使用する方法の例を私に示す方法はありますか?私はまだそれについて少し混乱しています! – Nervoxin
バイナリ検索は
char *lineptr[MAXLINE] //Array of char pointers stores the address of string
int binsrch(char srch[],int low,int high)
{
int mid;
if(high>=low){
mid=(low+high)/2;
if(strcmp(srch,lineptr[mid])<0) //compare string stored in srch and lineptr[mid]
return binsrch(srch,low,mid-1,count);
else if(strncmp(srch,lineptr[mid],count)>0)
return binsrch(srch,mid+1,high,count);
else
return mid; // Found
}
return -1; //Not found
}
がどのように数字のためにそれを使うのですかCで実装しますか?あなたは言葉のために同じことをするのを防ぐ何ですか? – Oleg
デモの実装では、簡単なGoogleの検索結果が表示されます:[GitHub Gist:BinarySearch.java](https://gist.github.com/aviraldg/2195495)。これは、通常のアルゴリズムで、 '<'のような比較は '' String'sのようなオブジェクトを処理するためにcompareToによって交換されます。 – Zabuza
@Nevoxinユーザーがあなたの質問に答えた場合は、彼の答えも受け入れてください([回答を受け入れる:どのように動作しますか?](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-作業))。そうでない場合は未回答のものを指定してください。これはStackOverflowの重要な部分です。ありがとうございます。 – Zabuza