The following is a simple recursive Binary Search function in C++ taken from here.
The following is a simple recursive Ternary Search function :
Which of the above two does less comparisons in worst case?
From the first look, it seems the ternary search does less number of comparisons as it makes Log3n recursive calls, but binary search makes Log2n recursive calls. Let us take a closer look.
The following is recursive formula for counting comparisons in worst case of Binary Search.
T(n) = T(n/2) + 2, T(1) = 1
The following is recursive formula for counting comparisons in worst case of Ternary Search.
T(n) = T(n/3) + 4, T(1) = 1
In binary search, there are 2Log2n + 1 comparisons in worst case. In ternary search, there are 4Log3n + 1 comparisons in worst case.
Time Complexity for Binary search = 2clog2n + O(1) Time Complexity for Ternary search = 4clog3n + O(1)
Therefore, the comparison of Ternary and Binary Searches boils down the comparison of expressions 2Log3n and Log2n . The value of 2Log3n can be written as (2 / Log23) * Log2n . Since the value of (2 / Log23) is more than one, Ternary Search does more comparisons than Binary Search in worst case.
Why Merge Sort divides input array in two halves, why not in three or more parts?
This article is contributed by Anmol. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Search an element in a sorted and rotated array
- Search in a row wise and column wise sorted matrix
- Interpolation search vs Binary search
- The Ubiquitous Binary Search | Set 1
- Unbounded Binary Search Example (Find the point where a monotonically increasing function becomes positive first time)
- Jump Search
- Search in an almost sorted array
- A Problem in Many Binary Search Implementations
- Search an element in an array where difference between adjacent elements is 1
- Fibonacci Search
- Interpolation Search
- Efficient search in an array where difference between adjacent is 1
- Sublist Search (Search a linked list in another list)
- Exponential Search
- Search in an array of strings where non-empty strings are sorted
- Search, insert and delete in an unsorted array
- Search, insert and delete in a sorted array
- Best First Search (Informed Search)
- Binary Search
- Recursive function to do substring search