From 9dba36da422ce29daae6bb819777294f93e10572 Mon Sep 17 00:00:00 2001 From: SundaramDubey <43514004+SundaramDubey@users.noreply.github.com> Date: Sun, 13 Oct 2019 15:34:54 +0530 Subject: [PATCH] Adding JumpSearch.java Like Binary Search, Jump Search is a searching algorithm for sorted arrays. The basic idea is to check fewer elements (than linear search) by jumping ahead by fixed steps or skipping some elements in place of searching all elements. --- src/com/search/JumpSearch.java | 55 ++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/com/search/JumpSearch.java diff --git a/src/com/search/JumpSearch.java b/src/com/search/JumpSearch.java new file mode 100644 index 0000000..846623b --- /dev/null +++ b/src/com/search/JumpSearch.java @@ -0,0 +1,55 @@ +// Java program to implement Jump Search. +public class JumpSearch +{ + public static int jumpSearch(int[] arr, int x) + { + int n = arr.length; + + // Finding block size to be jumped + int step = (int)Math.floor(Math.sqrt(n)); + + // Finding the block where element is + // present (if it is present) + int prev = 0; + while (arr[Math.min(step, n)-1] < x) + { + prev = step; + step += (int)Math.floor(Math.sqrt(n)); + if (prev >= n) + return -1; + } + + // Doing a linear search for x in block + // beginning with prev. + while (arr[prev] < x) + { + prev++; + + // If we reached next block or end of + // array, element is not present. + if (prev == Math.min(step, n)) + return -1; + } + + // If element is found + if (arr[prev] == x) + return prev; + + return -1; + } + + + public static void main(String [ ] args) + { + int arr[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, + 34, 55, 89, 144, 233, 377, 610}; + int x = 55; + + // Find the index of 'x' using Jump Search + int index = jumpSearch(arr, x); + + // Print the index where 'x' is located + System.out.println("\nNumber " + x + + " is at index " + index); + } +}