본문 바로가기
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;
}

'C > 알고리즘' 카테고리의 다른 글

kruskal algorithm[c]  (0) 2023.07.31
[C] 연결리스트 큐 이용한 기수정렬  (0) 2023.07.25
이진검색(Binary search)  (0) 2023.06.27
Dynamic-programming(동적기획법)  (0) 2023.06.08
[C]Square and multiply 알고리즘  (0) 2023.06.08