Javaデータ構造 - 検索アルゴリズム

1、線形探索(1サイクル)O(N)

1件の // 線形検索
2      公共の int型の検索(int型ターゲット){
 3          // 反復
4は         のためにint型 I = 0;私は<elements.length; I ++は){
 5              IF(要素[I] == ターゲット){
 6。                 IF(要素[I] == ターゲット){
 7。                     復帰I;
 8                  }
 。9              }
 10          }
 11は、         // 指定された要素が見つかりません
12は、         戻り -1 13です      }

 

図2に示すように、二分探索(サイクル条件ノートの端部は以上の始端である)O(LOGN)

1  公共 INT binarySearch(int型のターゲット){
 2          // 記録開始位置が
3。         INT 0 =始める;
 4          // 記録終了位置
5。         int型エンドelements.length = 1 ;
 6          // 中間位置を記録する
。7          INT MID =(開始エンド+)/ 2 ;
 8          // 記録先
9          int型のインデックス= -1 ;
 10          // バイナリ検索
。11          ながら(<開始端){
 12は             // 中間要素が見つからないよう、この決意の要素である
13である             IF(要素[MID] == ターゲット){
 14                  、インデックス= MID;
 15                  BREAK ;
 16              // 中間要素が探していない要素
。17              } {
 18である                 // 中間要素は、ターゲット要素の比が大きくないと判断する
。19                  IF(要素【mIDを】> ターゲット){
 20は                     // 位置の中間位置に前端位置調整
21は                      端mIDを= - 1。は22である                 // 中間要素は、ターゲット要素よりも小さい
23である                  } {
 24                      // 開始位置に調整されます位置の中間位置の後
25                      = mIDを+始める。1;
 26                  }
 27                  // 新たな中間位置取り外し
28                  MID =(開始端+)/ 2 ;
 29              }
 30          }
 31は、         リターン指数;
 32      }

 

おすすめ

転載: www.cnblogs.com/GjqDream/p/11576349.html