Binary Search vs. Brute Force Search Algorithms for Finding a Local Minimum in a
ID: 3723415 • Letter: B
Question
Binary Search vs. Brute Force Search Algorithms for Finding a Local Minimum in a Two- Dimensional Array Due: March 6th, 2018: 1 PM In this project, you will use C++ programming language to implement the binary search-based 0(n) algorithm to determine the local minimurm in an 'n, x 'n' two-dimensional array (as discussed in Module 2) and compare its run-time performance with that of a brute force O(n2) algorithm that searches for the local minimum element by element until one is found. Note that both the binary search and the brute force search algorithms should stop once a local minimum is found. You should create random two-dimensional arays (with numRows- numCols) with unique elements in the range [1... numRows numCols] for the following values of numRows (numCols) and determine the average execution time of the binary search and the brute force search algorithms by running 200 trials for each of the numRows (numCols) values. Determine the running times in nano seconds or milliseconds, as appropriate. num Rows (numCols) values: 4,6, 8, 10, 15, 20, 25, 30, 35. 40, 50, 75, 100, 150, 200, 250, 300. 350 ot the results with numRows in X-axis and the average execution times (in nanoseconds or Pl milliseconds) of the binary search and the brute force search algorithms in the Y-axiExplanation / Answer
time complexity bruteforce
code:-
#include <stdio.h>
#include <limits.h>
#include <time.h>
#include <sys/time.h>
//BruteForce
int search(int mat[5][5], int n, int k)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(mat[i][j]==k)
{
// printf("localMinindex=(%d,%d)",i,j);
break;
}
}
}
}
int main() {
// your code goes here
int i,j,r,c;
printf("Enter number of rows ");
scanf("%d",&r);
printf("Enter number of column ");
scanf("%d",&c);
int mat[r][c];
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
scanf("%d",&mat[i][j]);
}
}
int locmin=INT_MAX;
struct timeval timer_usec;
long long int timestamp_usec; / timestamp in microsecond /
if (!gettimeofday(&timer_usec, NULL)) {
timestamp_usec = ((long long int) timer_usec.tv_sec) * 1000000ll +
(long long int) timer_usec.tv_usec;
}
else {
timestamp_usec = -1;
}
printf("%lld microseconds since epoch ", timestamp_usec);
int loop;
for(loop=1;loop<=100000;loop++)
{
search(mat, r, 25);
}
if (!gettimeofday(&timer_usec, NULL)) {
timestamp_usec = ((long long int) timer_usec.tv_sec) * 1000000ll +
(long long int) timer_usec.tv_usec;
}
else {
timestamp_usec = -1;
}
printf("%lld microseconds since epoch ", timestamp_usec);
return 0;
}
Binary search :-
code
#include <stdio.h>
#include <limits.h>
#include <time.h>
#include <sys/time.h>
//Binary Search
int bsearch(int mat[5][5], int n, int k)
{
int i = 0, j = n-1; //set indexes for top right element
while ( i < n && j >= 0 )
{
if ( mat[i][j] == k )
{
// printf("n Found at %d, %d", i, j);
return 1;
}
if ( mat[i][j] > k )
j--;
else // if mat[i][j] < k
i++;
}
printf("n Element not found");
return 0; // if ( i==n || j== -1 )
}
int main() {
// your code goes here
int i,j,r;
printf("Enter number of rows & column ");
scanf("%d",&r);
int mat[r][r];
for(i=0;i<r;i++)
{
for(j=0;j<r;j++)
{
scanf("%d",&mat[i][j]);
}
}
// int locmin=INT_MAX;
struct timeval timer_usec;
long long int timestamp_usec; / timestamp in microsecond /
if (!gettimeofday(&timer_usec, NULL)) {
timestamp_usec = ((long long int) timer_usec.tv_sec) * 1000000ll +
(long long int) timer_usec.tv_usec;
}
else {
timestamp_usec = -1;
}
printf("%lld microseconds since epoch ", timestamp_usec);
int loop;
for(loop=1;loop<=100000;loop++)
{
bsearch(mat, 5, 25);
}
if (!gettimeofday(&timer_usec, NULL)) {
timestamp_usec = ((long long int) timer_usec.tv_sec) * 1000000ll +
(long long int) timer_usec.tv_usec;
}
else {
timestamp_usec = -1;
}
printf("%lld microseconds since epoch ", timestamp_usec);
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.