Skip to content

Comments

Optimize Ternary Search with adaptive precision and binary fallback#13629

Closed
faizan842 wants to merge 1 commit intoTheAlgorithms:masterfrom
faizan842:optimize-ternary-search
Closed

Optimize Ternary Search with adaptive precision and binary fallback#13629
faizan842 wants to merge 1 commit intoTheAlgorithms:masterfrom
faizan842:optimize-ternary-search

Conversation

@faizan842
Copy link

@faizan842 faizan842 commented Oct 20, 2025

This PR adds an optimized ternary search with adaptive precision, binary search fallback for small ranges, and memoized calculations. Keeps original functions and adds doctests for the optimized variants.

Checklist:

  • I have read and followed CONTRIBUTING.md.
  • My code has type hints and docstrings.
  • I added/updated doctests or tests where applicable.
  • No print()/input() in library code.
  • ruff passes locally (ruff check).
  • Code is formatted and readable.
  • Change is focused and documented (performance rationale included).

Tests/notes:

  • 47 doctests pass for ternary search (including optimized variants).
  • Adaptive precision reduces unnecessary linear fallback; binary fallback keeps O(log n) behavior on small ranges.

…lback

- Add adaptive precision calculation based on array size
- Implement binary search fallback instead of linear search (O(log n) vs O(n))
- Add optimized versions: ite_ternary_search_optimized() and rec_ternary_search_optimized()
- Memoize calculations for one_third and two_third to reduce redundant computation
- Add early termination conditions for better performance
- Keep original functions for backward compatibility

Performance improvements:
- Adaptive precision: 3-10 based on array size vs fixed 10
- Binary search fallback: O(log n) vs O(n) for small ranges
- Reduced redundant calculations through memoization
- Better handling of edge cases and empty arrays

All tests pass and maintain backward compatibility.
@algorithms-keeper
Copy link

Closing this pull request as invalid

@faizan842, this pull request is being closed as none of the checkboxes have been marked. It is important that you go through the checklist and mark the ones relevant to this pull request. Please read the Contributing guidelines.

If you're facing any problem on how to mark a checkbox, please read the following instructions:

  • Read a point one at a time and think if it is relevant to the pull request or not.
  • If it is, then mark it by putting a x between the square bracket like so: [x]

NOTE: Only [x] is supported so if you have put any other letter or symbol between the brackets, that will be marked as invalid. If that is the case then please open a new pull request with the appropriate changes.

@algorithms-keeper algorithms-keeper bot added the awaiting reviews This PR is ready to be reviewed label Oct 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting reviews This PR is ready to be reviewed invalid

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant