番兵法を用いた遂次探索
番兵法を用いた遂次探索
#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; }
配列の末端に追加したデータを番兵とよび、それを用いた手続きを番兵法と呼ぶ。