From 62218666f6f6769d08dca746d38266c28779085d Mon Sep 17 00:00:00 2001 From: VISHESH Date: Mon, 27 Oct 2025 23:53:38 +0530 Subject: [PATCH] Added Searching Algorithms in Java (fixes #173) --- Java/Searching algorithms/BinarySearch.java | 26 +++++++++++++++++++ Java/Searching algorithms/JumpSearch.java | 27 ++++++++++++++++++++ Java/Searching algorithms/LinearSearch.java | 16 ++++++++++++ Java/Searching algorithms/TernarySearch.java | 24 +++++++++++++++++ 4 files changed, 93 insertions(+) create mode 100644 Java/Searching algorithms/BinarySearch.java create mode 100644 Java/Searching algorithms/JumpSearch.java create mode 100644 Java/Searching algorithms/LinearSearch.java create mode 100644 Java/Searching algorithms/TernarySearch.java diff --git a/Java/Searching algorithms/BinarySearch.java b/Java/Searching algorithms/BinarySearch.java new file mode 100644 index 0000000..95c0414 --- /dev/null +++ b/Java/Searching algorithms/BinarySearch.java @@ -0,0 +1,26 @@ +package Java.Searching algorithms; + +import java.util.Arrays; + +public class BinarySearch { + public static int binarySearch(int[] arr, int target) { + int left = 0, right = arr.length - 1; + while (left <= right) { + int mid = left + (right - left) / 2; + if (arr[mid] == target) + return mid; + else if (arr[mid] < target) + left = mid + 1; + else + right = mid - 1; + } + return -1; + } + + public static void main(String[] args) { + int[] arr = {2, 3, 4, 5, 8}; + int index = binarySearch(arr, 5); + System.out.println(index != -1 ? "Found at index " + index : "Not found"); + } + +} diff --git a/Java/Searching algorithms/JumpSearch.java b/Java/Searching algorithms/JumpSearch.java new file mode 100644 index 0000000..a3e1768 --- /dev/null +++ b/Java/Searching algorithms/JumpSearch.java @@ -0,0 +1,27 @@ +package Java.Searching algorithms; + +public class JumpSearch { + public static int jumpSearch(int[] arr, int target) { + int n = arr.length; + int step = (int) Math.floor(Math.sqrt(n)); + int prev = 0; + + while (arr[Math.min(step, n) - 1] < target) { + prev = step; + step += (int) Math.floor(Math.sqrt(n)); + if (prev >= n) return -1; + } + + for (int i = prev; i < Math.min(step, n); i++) + if (arr[i] == target) + return i; + + return -1; + } + + public static void main(String[] args) { + int[] arr = {1, 3, 5, 7, 9, 11, 13}; + int index = jumpSearch(arr, 9); + System.out.println(index != -1 ? "Found at index " + index : "Not found"); + } +} diff --git a/Java/Searching algorithms/LinearSearch.java b/Java/Searching algorithms/LinearSearch.java new file mode 100644 index 0000000..645c877 --- /dev/null +++ b/Java/Searching algorithms/LinearSearch.java @@ -0,0 +1,16 @@ +package Java.Searching algorithms; + +public class LinearSearch { + public static int linearSearch(int[] arr, int target) { + for (int i = 0; i < arr.length; i++) + if (arr[i] == target) + return i; + return -1; + } + + public static void main(String[] args) { + int[] arr = {5, 3, 8, 4, 2}; + int index = linearSearch(arr, 4); + System.out.println(index != -1 ? "Found at index " + index : "Not found"); + } +} diff --git a/Java/Searching algorithms/TernarySearch.java b/Java/Searching algorithms/TernarySearch.java new file mode 100644 index 0000000..cd77032 --- /dev/null +++ b/Java/Searching algorithms/TernarySearch.java @@ -0,0 +1,24 @@ +package Java.Searching algorithms; + +public class TernarySearch { + public static int ternarySearch(int[] arr, int target, int left, int right) { + if (right >= left) { + int mid1 = left + (right - left) / 3; + int mid2 = right - (right - left) / 3; + + if (arr[mid1] == target) return mid1; + if (arr[mid2] == target) return mid2; + + if (target < arr[mid1]) return ternarySearch(arr, target, left, mid1 - 1); + else if (target > arr[mid2]) return ternarySearch(arr, target, mid2 + 1, right); + else return ternarySearch(arr, target, mid1 + 1, mid2 - 1); + } + return -1; + } + + public static void main(String[] args) { + int[] arr = {1, 3, 5, 7, 9}; + int index = ternarySearch(arr, 7, 0, arr.length - 1); + System.out.println(index != -1 ? "Found at index " + index : "Not found"); + } +}