package Ġmerge Sort Ċ Ċ fun Ġmerge Sort ( arr : ĠInt Array ) Ġ{ ĊĠĠĠ Ġm Sort ( arr , ĠInt Array ( arr . size ), Ġ 0 , Ġarr . size Ġ- Ġ 1 ) Ċ } Ċ Ċ private Ġfun Ġm Sort ( arr : ĠInt Array , Ġtemp : ĠInt Array , Ġleft : ĠInt , Ġright : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( left Ġ>= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmid Ġ= Ġ( left Ġ+ Ġright ) Ġ/ Ġ 2 ĊĠĠĠ Ġm Sort ( arr , Ġtemp , Ġleft , Ġmid ) ĊĠĠĠ Ġm Sort ( arr , Ġtemp , Ġmid Ġ+ Ġ 1 , Ġright ) ĊĊĠĠĠ Ġvar Ġi Ġ= Ġleft ĊĠĠĠ Ġvar Ġj Ġ= Ġmid Ġ+ Ġ 1 ĊĠĠĠ Ġvar Ġt Ġ= Ġleft ĊĠĠĠ Ġwhile Ġ( i Ġ<= Ġmid Ġ&& Ġj Ġ<= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp [ t ++] Ġ= Ġif Ġ( arr [ i ] Ġ< Ġarr [ j ]) Ġarr [ i ++] Ġelse Ġarr [ j ++] ĊĠĠĠ Ġ} ĊĠĠĠ Ġwhile Ġ( i Ġ<= Ġmid ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp [ t ++] Ġ= Ġarr [ i ++] ĊĠĠĠ Ġ} ĊĠĠĠ Ġwhile Ġ( j Ġ<= Ġright ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemp [ t ++] Ġ= Ġarr [ j ++] ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( k Ġin Ġleft .. right ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarr [ k ] Ġ= Ġtemp [ k ] ĊĠĠĠ Ġ} Ċ }