番兵法を用いた遂次探索

番兵法を用いた遂次探索

#include<stdio.h>
#define NUMBER 5
#define FAILED -1

int search(int vc[],int key,int no){
        int i = 0;
        vc[no] = key;
    
        while(1){
                if(vc[i] == key){
                        break;
                }
                i++;
        }
        return(i == no ? FAILED:i);
}

int main(void){
        int i,ky,idx;
        int vx[NUMBER+1];
    
        for(i=0;i<NUMBER;i++){
                printf("vx[%d]:",i);
                scanf("%d",&vx[i]);
        }
        printf("探す値:");
        scanf("%d",&ky);

        idx = search(vx,ky,NUMBER);
    
        if(idx == FAILED){
                puts("探索に失敗しました。");
        }else{
                printf("%d%d番目にあります。\n",ky,idx+1);
        }
        return 0;
}

配列の末端に追加したデータを番兵とよび、それを用いた手続きを番兵法と呼ぶ。