Problem 56040. A Binary Search
One way to locate a target value in a sorted array, is to use a binary search algorithm. Here, you test if the midpoint in the array is the target value. If it is, great! You're done. If not, then you continually narrow your search area depending on whether the target is less than or greater than the midpoint. The algorithm is as follows:
Given an array of sorted values (X), and a target value you wish to locate (target)
- Calculate the index of the midpoint of the array X by taking the average of the largest and smallest indices and rounding to the nearest integer.
- If the value located at the midpoint matches your target, set found to true.
- If the target is less than the value located at the midpoint of X, narrow your search to the lower half of X by setting the largest index in the array to the midpoint - 1.
- If the target is greater than the value located at the midpoint of X, narrow your search to the upper half of X by setting the smallest index in the array to the midpoint + 1.
- Repeat the steps above until found is true.
Write a function that takes X and target as inputs, performs a binary search and outputs the index of target value as well as the number of iterations it took to find the target.
Solution Stats
Problem Comments
-
6 Comments
Show
3 older comments
Jose Matos
on 23 Feb 2023
Very interesting problem, thanks!
Jose Matos
on 23 Feb 2023
I would like to know if anyone else is getting a discrepancy in tests 5 and 6. My number of iterations is one less than the expected in those two test sets. I had to start my iteration counter with 2 to get the expected results.
Dyuman Joshi
on 24 Feb 2023
@Jose, it's not a discrepancy, that is how one is suppose to calculate the number of iterations for this problem, as you can see from the example in the problem description.
Solution Comments
Show commentsProblem Recent Solvers73
Suggested Problems
-
How to find the position of an element in a vector without using the find function
2748 Solvers
-
Set the array elements whose value is 13 to 0
1377 Solvers
-
751 Solvers
-
特定の値がベクトル内に含まれているかを確認するコードを書こう
319 Solvers
-
320 Solvers
More from this Author10
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!