package Ġcom . q iao yu ang . algorithm Ċ Ċ /** Ċ Ġ* Ġ åłĨ æİĴåºı ĠKotlin Ġ å®ŀçİ° Ċ Ġ*/ Ċ Ċ fun Ġmain () Ġ{ Ċ ĉ val Ġarray Ġ= Ġint ArrayOf ( 5 , Ġ 7 , Ġ 2 , Ġ 9 , Ġ 3 , Ġ 1 , Ġ 4 , Ġ 0 , Ġ 8 , Ġ 6 ) Ċ ĉ array . heap Sort () Ċ ĉ array . forEach Ġ{ Ġprint ("$ it Ġ") Ġ} Ċ } Ċ Ċ fun ĠInt Array . heap Sort () Ġ{ Ċ ĉ var Ġn Ġ= Ġsize Ċ ĉ val Ġaux Ġ= ĠInt Array ( size Ġ+ Ġ 1 ) Ċ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ aux [ i + 1 ] Ġ= Ġthis [ i ] Ċ ĉ for Ġ( k Ġin Ġn Ġshr Ġ 1 Ġdown To Ġ 1 ) Ċĉ ĉ aux . sink ( k , Ġn ) ĉĊ ĉ while Ġ( n Ġ> Ġ 1 ) Ġ{ Ċĉ ĉ aux . exchange ( 1 , Ġn --) Ċĉ ĉ aux . sink ( 1 , Ġn ) Ċ ĉ } Ċ ĉ for Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ċĉ ĉ this [ i ] Ġ= Ġaux [ i + 1 ] Ċ } Ċ Ċ fun ĠInt Array . sink ( K : ĠInt , ĠN : ĠInt ) Ġ{ Ċ ĉ var Ġk Ġ= ĠK Ċ ĉ while Ġ( 2 Ġ* Ġk Ġ<= ĠN ) Ġ{ Ċĉ ĉ var Ġj Ġ= Ġ 2 Ġ* Ġk Ċĉ ĉ if Ġ( j Ġ< ĠN Ġ&& Ġthis [ j ] Ġ< Ġthis [ j + 1 ]) Ġj ++ Ċĉ ĉ if Ġ( this [ k ] Ġ> Ġthis [ j ]) Ġbreak ĊĠĠĠĠĠĠĠ Ġexchange ( k , Ġj ) ĊĉĠĠĠ Ġk Ġ= Ġj Ċ ĉ } Ċ }