TheAlgorithms / TheAlgorithms/Java
[FEATURE REQUEST] Add Search in Rotated Sorted Array implementation with JUnit tests
@Vivek-ML001 đang làm issue này rồi.
Từ ngày 27/8/2026.
- Ngôn ngữ chính
- Java
- Star
- 66.3k
- Fork
- 21.3k
- Merge trung bình
- 16 giờ 57 phút
- Pull request đã merge (30 ngày)
- 23
Mô tả
What would you like to Propose?
Feature Description
I would like to propose adding an implementation of Search in Rotated Sorted Array in Java using the Binary Search technique.
This is a classic variation of Binary Search that achieves $\mathcal{O}(\log N)$ time complexity by checking which half of the rotated array is sorted at each step.
Proposed Changes
I would like to add:
SearchInRotatedArray.javaundersrc/main/java/com/thealgorithms/searches/- Complete implementation with clear Javadoc explanations ($\mathcal{O}(\log N)$ Time, $\mathcal{O}(1)$ Space).
- Proper null checks and edge-case handling.
SearchInRotatedArrayTest.javaundersrc/test/java/com/thealgorithms/searches/- Comprehensive JUnit 5 test suite covering standard rotations, target not found, empty arrays, and single-element arrays.
Verification
I will ensure all code follows the project's formatting rules and passes ./gradlew test / mvn test locally before opening a PR.
I would love to implement this as my first open-source contribution! Could a maintainer please assign this issue to me?
Issue details
Issue Details & Algorithm Overview
1. Algorithm Description
- Algorithm: Search in Rotated Sorted Array
- Category: Searching Algorithms / Binary Search Variation
- Language: Java
2. How the Algorithm Works
Given a sorted array of integers that has been rotated at an unknown pivot index (e.g., [0, 1, 2, 4, 5, 6, 7] becomes [4, 5, 6, 7, 0, 1, 2]), find the index of a given target element. If the element is not present, return -1.
Key Logic:
- Find the middle element using
int mid = left + (right - left) / 2;to avoid integer overflow. - Check if the left half of the array (
nums[left]tonums[mid]) is sorted:- If sorted, check if the target falls within
nums[left]andnums[mid]. Adjustleftorrightboundaries accordingly.
- If sorted, check if the target falls within
- Otherwise, the right half must be sorted:
- Check if the target falls within
nums[mid]andnums[right]. Adjust boundaries accordingly.
- Check if the target falls within
3. Complexity Analysis
- Time Complexity: $\mathcal{O}(\log N)$ — Divides the search space in half at each iteration.
- Space Complexity: $\mathcal{O}(1)$ — Uses constant iterative space without recursion stacks or extra memory allocation.
4. Planned Files & Folder Structure
src/main/java/com/thealgorithms/searches/SearchInRotatedArray.java(Implementation)src/test/java/com/thealgorithms/searches/SearchInRotatedArrayTest.java(JUnit 5 Test Suite)
Additional Information
No response
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Đánh giá
Issue này chưa được đánh giá.