데이터 구조 루틴 - 선형 표 의 절반 찾기

6130 단어
본 고 는 [데이터 구조 기초 시리즈 (8): 찾기] 에서 3 교시 [선형 표 의 절반 찾기] 의 규칙 이다.
반값 으로 찾다.
#include 
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
    KeyType key;                //KeyType         
    InfoType data;              //    
} NodeType;
typedef NodeType SeqList[MAXL];     //     

int BinSearch(SeqList R,int n,KeyType k)
{
    int low=0,high=n-1,mid;
    while (low<=high)
    {
        mid=(low+high)/2;
        if (R[mid].key==k)      //      
            return mid+1;
        if (R[mid].key>k)       //   R[low..mid-1]   
            high=mid-1;
        else
            low=mid+1;          //   R[mid+1..high]   
    }
    return 0;
}

int main()
{
    int i,n=10;
    int result;
    SeqList R;
    KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75;
    for (i=0; iif(result>0)
        printf("     %d    %d
"
,result, x); else printf(" !
"
); return 0; }

2. 재 귀적 인 절반 찾기 알고리즘
#include 
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
    KeyType key;                //KeyType         
    InfoType data;              //    
} NodeType;
typedef NodeType SeqList[MAXL];     //     

int BinSearch1(SeqList R,int low,int high,KeyType k)
{
    int mid;
    if (low<=high)      //             
    {
        mid=(low+high)/2;  //     
        if (R[mid].key==k) //           mid+1
            return mid+1;
        if (R[mid].key>k)  // R[low..mid-1]     
            BinSearch1(R,low,mid-1,k);
        else              // R[mid+1..high]     
            BinSearch1(R,mid+1,high,k);
    }
    else
        return 0;
}

int main()
{
    int i,n=10;
    int result;
    SeqList R;
    KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75;
    for (i=0; i0,n-1,x);
    if(result>0)
        printf("     %d    %d
"
,result, x); else printf(" !
"
); return 0; }

좋은 웹페이지 즐겨찾기