#30621: c語言新手(利用malloc和非遞回binary search)


tinakga920029@gmail.com (云婷)

學校 : 金門縣金城國中
編號 : 190665
來源 : [218.173.75.121]
最後登入時間 :
2022-06-03 12:21:10
f679. 公會成員 -- 教學題 | From: [218.173.87.140] | 發表日期 : 2022-06-01 19:05

#include <stdio.h>
#include<stdlib.h>
int BinarySearch(int,int);
int main(){
    int int_N,int_Q;
    scanf("%d %d",&int_N,&int_Q);
    BinarySearch(int_N,int_Q);
}

int BinarySearch(int int_N,int int_Q){
    int *ptr;//declare a pointer
    ptr=(int*)malloc(sizeof(int)*int_N);//利用malloc動態分配一維陣列
    int i;
    for(i=0;i<int_N;i++){
        scanf("%d",&ptr[i]);//使用一個loop將資料讀入陣列
    }
    for(i=1;i<=int_Q;i++){
        int quer=0,a,b,mid;//查詢的玩家編號
        _Bool tag=0;
        scanf("%d",&quer);
        a=0;b=int_N-1;
        while(a<=b){//做binarysearch非遞回版本
            mid=ptr[(a+b)/2];
            if(quer==mid){
                printf("Yes\n");
                tag=1;
                break;
            }
            if(quer<mid){
                b=((a+b)/2)-1;
            }
            else if(quer>mid){
                a=((a+b)/2)+1;
            }
            

        }
        if(tag==0){
            printf("No\n");
        }
        
    
        
    }

    return 0;

}

 
ZeroJudge Forum