Data Structure & Algorithm

Binary Search Algorithm

Rogue 2022. 9. 5. 23:31
반응형
#include <stdio.h>

// Binary Search Algorithm

int BSearch(int ar[], int len, int target);

int main(void)
{
	int arr[] = { 1, 3, 5, 7, 9 };

	int idx;

	idx = BSearch(arr, sizeof(arr) / sizeof(int), 7);
	if (idx == -1)
		printf("Search to failed\n");
	else
		printf("Target Stored Index : %d \n", idx);

	idx = BSearch(arr, sizeof(arr) / sizeof(int), 4);
	if (idx == -1)
		printf("Search to failed\n");
	else
		printf("Target Stored Index : %d \n", idx);

	return 0;
}

int BSearch(int ar[], int len, int target)
{
	int first = 0;
	int last = len - 1;
	int mid;

	while (first <= last)
	{
		mid = (first + last) / 2;

		if (target == ar[mid])
		{
			return mid;
		}
		else
		{
			if (target < ar[mid])
				last = mid - 1;
			else
				first = mid + 1;
		}
	}
	return -1;
}
#include <stdio.h>

// Binary Search Number of Operator
int BSearch(int ar[], int len, int target)
{
	int first = 0;
	int last = len - 1;
	int mid;
	int opCount = 0;

	while (first <= last)
	{
		mid = (first + last) / 2;

		if (target == ar[mid])
		{
			return mid;
		}
		else
		{
			if (target < ar[mid])
				last = mid - 1;
			else
				first = mid + 1;
		}
		opCount += 1;
	}
	printf("Number of comparative operations : %d\n", opCount);
	return -1;
}

int main(void)
{
	int arr1[500] = { 0, };
	int arr2[5000] = { 0, };
	int arr3[50000] = { 0, };
	int idx;

	// Command to find unsaved integer 1 for array 1
	idx = BSearch(arr1, sizeof(arr1) / sizeof(int), 1);
	if (idx == -1)
		printf("Search to failed\n\n");
	else
		printf("Target Stored Index : %d\n", idx);

	// Command to find unsaved integer 2 for array 2
	idx = BSearch(arr2, sizeof(arr2) / sizeof(int), 2);
	if (idx == -1)
		printf("Search to failed\n\n");
	else
		printf("Target Stored Index : %d\n", idx);

	// Command to find unsaved integer 3 for array 3
	idx = BSearch(arr3, sizeof(arr3) / sizeof(int), 3);
	if (idx == -1)
		printf("Search to failed\n\n");
	else
		printf("Target Stored Index : %d\n", idx);

	return 0;
}

/*
Number of comparative operations : 9
Search to failed

Number of comparative operations : 13
Search to failed

Number of comparative operations : 16
Search to failed
*/
반응형