From 3a05c9ccab920109a5f8e79c89e99ee707e2fa77 Mon Sep 17 00:00:00 2001 From: Haseeb Ahmed Date: Tue, 5 Oct 2021 17:36:25 +0500 Subject: [PATCH 1/3] Recursive Binary Search added --- Algorithms/RecursiveBinarySearch.java | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Algorithms/RecursiveBinarySearch.java diff --git a/Algorithms/RecursiveBinarySearch.java b/Algorithms/RecursiveBinarySearch.java new file mode 100644 index 00000000..6b08ba00 --- /dev/null +++ b/Algorithms/RecursiveBinarySearch.java @@ -0,0 +1,44 @@ +// Java implementation of recursive Binary Search +class RecursiveBinarySearch { + // Returns index of x if it is present in arr[l.. + // r], else return -1 + int binarySearch(int arr[], int l, int r, int x) + { + if (r >= l) { + int mid = l + (r - l) / 2; + + // If the element is present at the + // middle itself + if (arr[mid] == x) + return mid; + + // If element is smaller than mid, then + // it can only be present in left subarray + if (arr[mid] > x) + return binarySearch(arr, l, mid - 1, x); + + // Else the element can only be present + // in right subarray + return binarySearch(arr, mid + 1, r, x); + } + + // We reach here when element is not present + // in array + return -1; + } + + + public static void main(String args[]) + { + BinarySearch ob = new BinarySearch(); + int arr[] = { 2, 3, 4, 10, 40 }; + int n = arr.length; + int x = 10; + int result = ob.binarySearch(arr, 0, n - 1, x); + if (result == -1) + System.out.println("Element not present"); + else + System.out.println("Element found at index " + result); + } +} + From 0313a48a8ae1548c8bdc4ba6d54dbbe8c472b0db Mon Sep 17 00:00:00 2001 From: Haseeb Ahmed Date: Tue, 5 Oct 2021 17:45:41 +0500 Subject: [PATCH 2/3] Dutch National Flag Algorithm added --- Algorithms/DutchNationalFlagAlgo.java | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Algorithms/DutchNationalFlagAlgo.java diff --git a/Algorithms/DutchNationalFlagAlgo.java b/Algorithms/DutchNationalFlagAlgo.java new file mode 100644 index 00000000..53c109fb --- /dev/null +++ b/Algorithms/DutchNationalFlagAlgo.java @@ -0,0 +1,46 @@ +import java.util.Scanner; +public class DutchNationalFlagAlgo +{ + public static void sortColors(int[] nums) { + int mid=0; + int low=0; + int high=nums.length - 1; + while(mid<=high) + { + if(nums[mid]==0) + { + int temp = nums[low]; + nums[low] = nums[mid]; + nums[mid] = temp; + mid++; + low++; + } + else if (nums[mid]==1) + { + mid++; + } + else + { + int temp = nums[high]; + nums[high] = nums[mid]; + nums[mid] = temp; + high--; + } + } + } + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + int []arr = new int[n]; + for(int i=0;i Date: Tue, 5 Oct 2021 17:53:02 +0500 Subject: [PATCH 3/3] Kedane Algorithm added in DP --- Dynamic Programming/KadaneAlorithm.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Dynamic Programming/KadaneAlorithm.java diff --git a/Dynamic Programming/KadaneAlorithm.java b/Dynamic Programming/KadaneAlorithm.java new file mode 100644 index 00000000..e5857ac6 --- /dev/null +++ b/Dynamic Programming/KadaneAlorithm.java @@ -0,0 +1,19 @@ + +class KadaneAlorithm{ + + // arr: input array + // n: size of array + //Function to find the sum of contiguous subarray with maximum sum. + int maxSubarraySum(int arr[]){ + int n = arr.length; + int localMax = 0; + int globalMax = Integer.MIN_VALUE; + + for(int i = 0; i < n; i++){ + localMax = Math.max(arr[i], localMax + arr[i]); + if(localMax > globalMax){ + globalMax = localMax; + } + } + return globalMax; + }