728x90
반응형
#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
*/
728x90
반응형

'Data Structure & Algorithm' 카테고리의 다른 글

Linked List  (0) 2022.09.10
Bubble Sort Algorithm  (0) 2022.09.09
Sequential Data Structure  (0) 2022.09.07
Recursion (Factorial, Fibonacci, Tower of Hanoi)  (0) 2022.09.06
Linear Search (Sequential Search) Algorithm  (0) 2022.09.05

+ Recent posts