From 96ce281b208fc8905a03ee5fa4685226fea3c389 Mon Sep 17 00:00:00 2001 From: jugal Date: Sun, 9 Mar 2025 17:58:29 +0530 Subject: [PATCH] Mod 7 quicksort --- .../hithomelabs/princeton1/module7/Quick.java | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java b/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java index 1483c7e..364f767 100644 --- a/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java +++ b/module7/src/main/java/com/hithomelabs/princeton1/module7/Quick.java @@ -2,10 +2,57 @@ package com.hithomelabs.princeton1.module7; import com.hithomelabs.princeton1.module5.AbstractCustomSorts; +import java.util.Arrays; +import java.util.Collections; +import java.util.Random; + public class Quick extends AbstractCustomSorts { @Override public void sort(E[] arr) { - +// Collections.shuffle(Arrays.asList(arr)); + sort(arr, 0, arr.length-1); } + + public void sort(E[] arr, int lo, int hi){ + if(lo>=hi) return; + int pivot = partition(arr, lo, hi); + sort(arr, lo, pivot-1); + sort(arr, pivot+1,hi); + } + + private int partition(E[] arr, int lo, int hi){ + int pivot=lo, i=lo, j=hi+1; + + while(i) arr[++i], arr[pivot])) + if(i == hi) break; + + while(less((Comparable) arr[pivot], arr[--j])) + if(j == lo) break; + + if(i>=j) break; + exch(arr,i, j); + } + exch(arr,pivot,j); + return j; + } + +// public static void main(String[] args){ +// Integer[] arrTest = new Integer[6]; +// +// for(int i=0;i<6;i++){ +// arrTest[i] = new Random().nextInt(100); +// System.out.println(arrTest[i]); +// } +// +// System.out.println(); +// +// Quick sortAlgo = new Quick<>(); +// +// sortAlgo.sort(arrTest); +// +// for(Integer i: arrTest) +// System.out.println(i); +// } }