package Ġcom . se ki ro . sorting _ native Ċ Ċ import Ġkotlin . random . Random Ċ Ċ object ĠAlgorithm Ġ{ ĊĠĠĠ Ġfun Ġquick Sort ( input : ĠList < Int >): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( input . size Ġ<= Ġ 1 ) Ġreturn Ġinput ĊĠĠĠĠĠĠĠ Ġval Ġpivot Idx Ġ= ĠRandom . nextInt ( input . size ) ĊĠĠĠĠĠĠĠ Ġval Ġpivot Ġ= Ġinput [ pivot Idx ] ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġarray ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġarray ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġinput . forEach Indexed Ġ{ Ġindex , Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġpivot Idx ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġpivot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft . add ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġarray ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġresult . addAll ( quick Sort ( left )) ĊĠĠĠĠĠĠĠ Ġresult . add ( pivot ) ĊĠĠĠĠĠĠĠ Ġresult . addAll ( quick Sort ( right )) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ; ĊĠĠĠ Ġ} Ċ }