import Ġjava . util . Scanner Ċ Ċ class ĠRad ix Sort Ġ{ ĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġarr Ġ= ĠInt Array ( 1 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġn : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġuser In Ġ= ĠScanner ( System .` in `) ĊĊĠĠĠĠĠĠĠ Ġ// Ġretrieve Ġnumber Ġof Ġelements Ġand Ġelements Ġto Ġbe Ġsorted ĊĠĠĠĠĠĠĠ ĠSystem . out . print (" Enter Ġthe Ġnumber Ġof Ġelements : Ġ") ĊĠĠĠĠĠĠĠ Ġn Ġ= Ġuser In . nextInt () ĊĊĠĠĠĠĠĠĠ ĠSystem . out . print (" Enter Ġeach Ġof Ġthe Ġelements : Ġ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarr [ i ] Ġ= Ġuser In . nextInt () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġclose Ġuser Ġinput ĊĠĠĠĠĠĠĠ Ġuser In . close () ĊĊĠĠĠĠĠĠĠ Ġ// Ġperform Ġradix Ġsort ĊĠĠĠĠĠĠĠ Ġarr Ġ= Ġradix Sort ( arr , Ġn ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdisplay Ġthe Ġsorted Ġresult ĊĠĠĠĠĠĠĠ ĠSystem . out . println (" After Ġsorting :") ĊĠĠĠĠĠĠĠ Ġprint Arr ( arr , Ġn ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprint Arr ( arr : ĠInt Array , Ġn : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . print ( arr [ i ]. toString () Ġ+ Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSystem . out . println () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġradix Sort ( arr : ĠInt Array , Ġn : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġarr Ġ= Ġarr ĊĠĠĠĠĠĠĠ Ġval Ġmax Ġ= ĠgetMax ( arr , Ġn ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġexp Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( max Ġ/ Ġexp Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarr Ġ= Ġcount Sort ( arr , Ġn , Ġexp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexp Ġ*= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġarr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetMax ( arr : ĠInt Array , Ġn : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġarr [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arr [ i ] Ġ> Ġmax ) Ġmax Ġ= Ġarr [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmax ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcount Sort ( arr : ĠInt Array , Ġn : ĠInt , Ġexp : ĠInt ): ĠInt Array Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠInt Array ( n ) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠInt Array ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġi : ĠInt ĊĊĠĠĠĠĠĠĠ Ġ// Ġstore Ġcount Ġof Ġoccurrences Ġin Ġcount [] ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount [ arr [ i ] Ġ/ Ġexp Ġ% Ġ 1 0 ] ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount [ i ] Ġ+= Ġcount [ i Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġmaking Ġthe Ġoutput Ġarray ĊĠĠĠĠĠĠĠ Ġi Ġ= Ġn Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput [ count [ arr [ i ] Ġ/ Ġexp Ġ% Ġ 1 0 ] Ġ- Ġ 1 ] Ġ= Ġarr [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount [ arr [ i ] Ġ/ Ġexp Ġ% Ġ 1 0 ] -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi -- ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠ Ġ} Ċ } Ċ