--- title: アルゴリズム author: kazu634 date: 2008-05-08 url: /2008/05/08/_984/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3995;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - C - Programming ---

 研修でやったのをCで実装するよ。

番兵法

#include <stdio.h>
int main(void);
int search(int a[], int num_a, int key);
void prt_int_array(const int a[], int num_a);
void prt_int_array(const int a[], int num_a)
{
int i;
for (i = ;i < num_a;i++) {
printf ("a[%d] --> %d\n", i, a[i]);
}
}
int search(int a[], int num_a, int key)
{
int p = ;			/* keyが見つかった配列の添え字 */
int i = ;			/* 作業用 */
/* 番兵をセットするね */
a[num_a - 1] = key;
/* 見つかるまで繰り返すよ */
while (p == ) {
printf ("Now Searching array[%d] --> %d\n", i, a[i]);
if (a[i] == key) {
p = i;
}
else {
i++;
}
}
/* 番兵なら見つからなかったことにする */
if (i == num_a - 1) p = -1;
return(p);
}
int main(void)
{
int array[8] = {, 1, 2, 3, 4, 5, 6};
int num_array = sizeof(array) / sizeof(array[]);
prt_int_array(array, num_array);
printf ("\n");
printf ("Searching Begins:\n");
printf ("9 is a[%d]\n", search(array, num_array, 9));
return();
}