[アルゴリズム] [外観]二分の二分

する#include <stdio.hの> INT (メイン){
     int型 A [] = { 123456789101112は13であり1415 };
     INT = L はsizeof(A)/ 4。 ;         // INT X = 10 ;                 // の値を見つけるためINT二分(int型 Xを


    
    
    INT * A、int型L); 
    二分(X、A、L); 
    
    戻り 0 ; 
} 

int型二分(INT X、INT * A、int型L){
     int型、アドレス     //の数の位置を見つける 
     // 2考えると終了位置
    IF(1- [X == A 1 ]){ 
        アドレス = L- 1 ; 
        のprintf(" %d個の\ N- " 、アドレス);
         リターンアドレス; 
    } そう IF(== X [ 0 ]){ 
        アドレス =0 ; 
        printf(" %d個の\ n " 、アドレス)。
        リターンアドレス。
    } 
    // 如果不在两端 
    アドレス= L / 2 
    L = L / 2 一方、){
         もし(x == A [住所]){ 
            のprintf(" %d個の\ n " 、アドレス)。
            破ります; 
        } そう であれば(X> [住所]){ 
            L = L / 2 
            アドレス =アドレス+L; 
        } そう IF(X < A [住所]){ 
            L = L / 2 ; 
            アドレス =アドレス- L; 
        } 
        IF(Lの== 0 ){ 
             // L = 0を示す見つからない場合 
            (printf関数はありません見つかった" );
             BREAK ; 
        } 
    }      
    リターンアドレス; 
}

 

おすすめ

転載: www.cnblogs.com/LPworld/p/11229305.html