Monday, August 17, 2015

Binary Search - Thuật toán tìm kiếm nhị phân

Đầu vào: Cho một mảng T[1 ... n ] có n phần tử đã sắp xếp theo thứ tự tăng dần và một giá trị x là số cần kiểm tra xem có tồn tại trong mảng hay không.
Đầu ra: trả về kết quả thông báo cho người dùng biết có hoặc không có.

Hình 10.1: Kết quả chương trình tìm kiếm nhị phân - C

#include <stdio.h>
#include <conio.h>

/**
** Search x in array a[] have n element
**/
int binary_search(int* a, int n, int x);

/**
** Main function
**/
int main(){
    int a[10] = {1,2,3,4,5,6,7,8,9,10};
    int x = -1;
    int i = 0;
    printf("Array: {");
    for(i = 0; i < 10; i++){
          if( i!=9 ){
               printf("%d , ", a[i]);      
          } else {
               printf("%d ", a[i]);  
          }
    }
    printf("}\n");
    while(x){
        printf("enter the number search: ");
        scanf("%d", &x);
        
        if(binary_search(a, 10, x)){
            printf("%d Search return True!\n", x);                    
        } else {
            printf("%d Search return False!\n", x);       
        }
    }
    printf("\n Enter any charecter end program ....");
    getch();
    return 0;   
}

int binary_search(int* a, int n, int x){
    int i;
    while(n > 0){
        i = n/2;
        if( a[i] == x ){
            return 1;    
        } else if(a[i] < x) {
            a = &(a[i+1]);
            n = n - i - 1;       
        } else {
            n = i;       
        }        
    }
    return 0;        
}


No comments:

Post a Comment

Popular Posts