基本的な検索アルゴリズムは、次のとおり順次検索、バイナリ検索、
シーケンシャル検索は、答えは、配列の各要素を、取得するためのforループを比較することにより、見つかった原因不明の数によって達成されることは非常に短いです。
横断するので、シーケンシャルサーチは、時間がかかり、不利な点は低効率である、配列をソートする必要はありません。
バイナリサーチは、ソートアルゴリズム最初の使用の配列を取得する必要はない場合整然とした配列は、(バブル、SELECT、INSERT)ソートすることを提供し、効率を改善する方法を見つけることです。
バイナリ検索を使用すると、そのすぐアレイが2つに分割している二分法、半々コントラスト低下の範囲です。
二分法コードの実装:
クラステスト { 公共 静的 ボイドのmain() { int型 []数= 新しい INT [] { 11、22、33、44、55、66、77、88、99 }。 int型 sValue = 33 ; int型のインデックス。 インデックス = 二分法(数、sValue)。 Console.WriteLineを(" {0} " 、インデックス) } 公共の 静的 INT 二分法(INT [] NUM、INT sValue) { int型アッパー= num.Length() - 1 ; int型低級= 0 。 INT /ミッド=(+上下)2 。 一方(= <下部上部) { 場合(NUM [中間] == sValue) { 戻り 中間と、 // 存在返回下标 } もし(NUM [中間]> sValue) { 上側 =半ば1 。 } IF(NUM [MID] < sValue) { 下段 = MID + 1 ; } リターン - 1 ; // 存在しない-1 }
パブリックstatic int型Rdichotomy(INT [] NUM、INT sValue)
{
int型アッパー= num.Length() - 1 ;
低級= 0 int型。
/ 2 INT半ば=(+上下)。
IF(下部>上)
{
-1を返します。
} 他
{
(NUM [MID] == sValue)IF { ; //添字存在を返すMIDを返します }
IF(NUM [中間]> sValue) {
二分法(INT [] NUM、INT sValue)
}
IF(NUM [中間]> sValue) {
二分法(INT [] NUM、INT sValue)
}
} IF(NUM [中間]> sValue){上側=半ば1 。} IF(NUM [中間] < sValue){低級=ミッド+ 1 。}戻り値-1; //不存在返回-1 }
} }