From 864b7d5646babac36579e6195683357635f775a2 Mon Sep 17 00:00:00 2001 From: Mayank Kochar <51817532+Mayankochar@users.noreply.github.com> Date: Fri, 30 Oct 2020 03:27:28 +0530 Subject: [PATCH] Create QuickSelect.java This algorithm allows you to find the kth smallest/largest element efficiently. --- QuickSelect.java | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 QuickSelect.java diff --git a/QuickSelect.java b/QuickSelect.java new file mode 100644 index 0000000..2a6ce6f --- /dev/null +++ b/QuickSelect.java @@ -0,0 +1,38 @@ +class QuickSelect { + public void swap(int[] nums, int i, int j) { + int temp = nums[i]; + nums[i] = nums[j]; + nums[j] = temp; + } + public int partition(int[] nums,int i,int j) { + int l = i - 1; + Random r = new Random(); + int p = i + r.nextInt(j - i + 1); + swap(nums,p,j); + int pivot = nums[j]; + for(int k=i;k