11package com .hackerrank .algorithms .arraysandsorting ;
22
3- import java .util .ArrayList ;
4- import java .util .List ;
53import java .util .Scanner ;
64
75/**
1311 */
1412public class QuickSort2 {
1513
16- static void quickSort (int [] ar , int start , int end ) {
17- int pivot = ar [0 ];
18- List <Integer > ar1 = new ArrayList <>();
19- List <Integer > ar2 = new ArrayList <>();
20-
21- for (int i = start ; i < end ; i ++) {
22- if (ar [i ] < pivot ) {
23- ar1 .add (ar [i ]);
24- } else if (ar [i ] > pivot ) {
25- ar2 .add (ar [i ]);
14+ static int partition (int [] a , int start , int end ) {
15+
16+ int pivot = start , temp ;
17+
18+ for (int i = start + 1 ; i <= end ; i ++) {
19+ // maintains the relative positioning of elements in each partition
20+ if (a [i ] < a [pivot ]) {
21+ start ++;
22+ temp = a [i ];
23+ int j ;
24+ for (j = i ; j > start ; j --) {
25+ a [j ] = a [j - 1 ];
26+ }
27+ a [j ] = temp ;
2628 }
2729 }
2830
29- //TODO
31+ temp = a [pivot ];
32+ while (pivot < start ) {
33+ a [pivot ] = a [pivot + 1 ];
34+ pivot ++;
35+ }
36+ a [pivot ] = temp ;
37+
38+ return pivot ;
3039 }
3140
32- static void printArray (int [] ar ) {
33- for (int n : ar ) {
34- System .out .print (n + " " );
41+ static void quickSort (int [] ar , int start , int end ) {
42+ if (start < end ) {
43+ int p = partition (ar , start , end );
44+ quickSort (ar , start , p - 1 );
45+ quickSort (ar , p + 1 , end );
46+ for (int i = start ; i <= end ; i ++) {
47+ System .out .print (ar [i ] + " " );
48+ }
49+ System .out .println ();
3550 }
36- System .out .println ("" );
3751 }
3852
3953 public static void main (String [] args ) {
@@ -43,6 +57,6 @@ public static void main(String[] args) {
4357 for (int i = 0 ; i < n ; i ++) {
4458 ar [i ] = in .nextInt ();
4559 }
46- quickSort (ar , 0 , ar . length );
60+ quickSort (ar , 0 , n - 1 );
4761 }
4862}
0 commit comments