C/알고리즘
보초법(sentinel method)
by 덤더리덤떰
2023. 6. 27.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
void generate(int* ptr, int size, int mod) {
srand((unsigned int)time(NULL));
int i;
for (i = 0; i < size; i++) {
ptr[i] = rand() % mod + 1;
}
}
void PrintArr(int* ptr, int size) {
int i;
printf("생성한 배열 원소 출력\n");
for (i = 0; i < size; i++) {
printf("%d ", ptr[i]);
}
}
int Search(int* ptr, int num, int size) {
ptr[size] = num;
int i;
for (i = 0; i <= size; i++)
{
if (ptr[i] == num) {
break;
}
}
return i == size ? -1 : i;
}
int main() {
int size;
int mod;
int* arr = NULL;
int num;
printf("몇개의 정수를 생성하시겠습니까?\n");
scanf("%d", &size);
arr = (int*)calloc(size+1, sizeof(int));
assert(arr != NULL);
printf("정수의 범위를 정하세요(1~입력한 숫자)\n");
scanf("%d", &mod);
generate(arr, size, mod);
PrintArr(arr, size);
printf("\n찾으시고자 하는 정수를 입력하세요\n");
scanf("%d", &num);
if (Search(arr, num, size) != -1) {
printf("숫자 %d는 arr[%d]에 있습니다", num, Search(arr, num, size));
}
else {
printf("해당 숫자는 존재하지않습니다\n");
return;
}
printf("\n보초법 알고리즘 수행 후 배열 요소\n");
for (int i = 0; i <= size; i++) {
printf("%d ", arr[i]);
}
getchar();
return 0;
}