package Ġedu . full ert on . Adv S of ware Process . Insertion Sort App Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View . IN VISIBLE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Toast Ċ import Ġes . dm oral . toast y . Toast y Ċ import Ġkotlinx . android . synt hetic . main . activity _ sort .* Ċ import Ġjava . lang . Number FormatException Ċ import Ġjava . time . LocalDateTime ĊĊ Ċ class Ġsort Ġ: ĠAppCompatActivity () Ġ Ġ{ ĊĊĊĠĠĠ Ġval ĠDat as Ġ= ĠArrayList < Int >(); ĊĠĠĠ Ġval Ġresult Ġ= ĠArrayList < String >(); ĊĠĠĠ Ġvar Ġt Ġ= ĠArrayList < String >(); ĊĠĠĠ Ġvar Ġrecord st = Ġrecords ( 0 , null , null , Ġnull ) ĊĊĠĠĠ Ġ/* ĊĠĠĠ ĠP seudo - code ĊĊĠĠĠ Ġfor Ġi Ġfrom Ġ 1 Ġto ĠN ĊĠĠĠĠĠĠ Ġkey Ġ= Ġa [ i ] ĊĠĠĠĠĠĠ Ġj Ġ= Ġi Ġ- Ġ 1 ĊĠĠĠĠĠĠ Ġwhile Ġj Ġ>= Ġ 0 Ġand Ġa [ j ] Ġ> Ġkey ĊĠĠĠĠĠĠĠĠĠ Ġa [ j + 1 ] Ġ= Ġa [ j ] ĊĠĠĠĠĠĠĠĠĠ Ġj Ġ= Ġj Ġ- Ġ 1 ĊĠĠĠĠĠĠ Ġa [ j + 1 ] Ġ= Ġkey ĊĊ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠInsert ion Sort ( arrays : ĠArrayList < Int >): ĠArrayList < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġarrays . size ; ĊĠĠĠĠĠĠĠ Ġval Ġexpected Arrays Ġ= ĠArrayList < Int >(); ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 Ġuntil Ġsize ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠInitial _ Value Ġ= Ġarrays [ i ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġj Ġ= Ġi Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . contains ( arrays . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( arrays . toString ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( j Ġ>= Ġ 0 Ġ&& Ġarrays [ j ] Ġ> ĠInitial _ Value ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrays [ j Ġ+ Ġ 1 ] Ġ= Ġarrays [ j ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj Ġ-= Ġ 1 ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġarrays [ j Ġ+ Ġ 1 ] Ġ= ĠInitial _ Value ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġarrays ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* Ġcondition ĊĊĊĠĠĠ ĠInput Ġconsists Ġof Ġa Ġset Ġof ĠInteger Ġnumbers . ĠInteger Ġnumbers Ġwill Ġbe Ġone Ġamong Ġthe ĊĠĠĠ Ġinteger Ġset Ġ[ 0 Ġto Ġ 9 ]. ĠIf Ġinput Ġdoes Ġnot Ġmeet Ġthe Ġmin / max Ġnumbers , Ġissue Ġan Ġerror ĊĠĠĠ Ġmessage , Ġand Ġask Ġto Ġcorrect Ġfor Ġanother Ġchance . ĠUse Ġan Ġarray Ġto Ġalign Ġinput Ġvalues . ĠArray ĊĠĠĠ Ġindex Ġvalue Ġstarts Ġfrom Ġ 0 . ĊĠĠĠ Ġ ï Ĥ § ĊĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠCondition _ add ( num : ĠInt ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( num Ġin Ġ 0 . range To ( 9 )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDat as . add ( num ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( Datas . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . clear (); ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĊĠĠĠ ĠThe Ġmaximum Ġinput Ġsize Ġ= Ġ 8 Ġ( maximum Ġnumber Ġof Ġnumbers Ġto Ġsort ) ĊĠĠĠ Ġ ï Ĥ § ĠThe Ġminimum Ġinput Ġsize Ġ= Ġ 2 Ġ( otherwise , Ġissue Ġan Ġerror Ġmessage ) ĊĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠCheck _ Size ( arrays : ĠArrayList < Int >): ĠInt Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( arrays . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . clear (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( arrays . size Ġ> Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . clear (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠInsert ion Sort ( arrays ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sort ) ĊĠĠĠĠĠĠĠ Ġthis . title =" Sorting " ĊĠĠĠĠĠĠĠ Ġval Ġdb Ġ= ĠApp Database . getInstance ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġan Ġcontr uctor Ġfor Ġsimple Ġtext view Ġin Ġthe Ġdatas Ġarray ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( this , Ġandroid . R . layout . simple _ list _ item _ 1 , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ// Ġconnect Ġthe Ġadapter Ġwith Ġthe Ġlist view Ġ( Ġid : ĠLists ) ĊĠĠĠĠĠĠĠ ĠLists . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġ// Ġadding Ġclear Ġbutton Ġfor Ġuser Ġwhen Ġthe Ġwant Ġa Ġnew Ġset Ġof Ġarrays ĊĠĠĠĠĠĠĠ Ġclear . visibility Ġ= ĠIN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġbutton Ġto Ġcheck Ġall Ġthe Ġcondition Ġneed Ġ 0 Ġ- 9 Ġintegers ĊĠĠĠĠĠĠĠ Ġadd !!. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtoast Ġfunction Ġusing Ġfor Ġmake Ġan Ġlittle Ġmessage Ġat Ġthe Ġbottom Ġof Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠU input Ġ= Ġinput . text . toString (). trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( U input . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġ" No ĠNumbers Ġinput Ġ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif ( U input . contains (". ")){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġ" Input Ġshould Ġbe Ġin ĠInteger Ġtype Ġ", ĠToast . LENGTH _ LONG ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Ġ= ĠU input . split (" Ġ", Ġ", ") Ġas ĠArrayList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcheck Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord st . input Ġ= Ġt . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord st . date Ġ= ĠLocalDateTime . now (). toString () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . forEach () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Condition _ add ( it . toInt ())) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Your ĠInput Ġnot Ġin ĠRange Ġ 0 - 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDat as . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġis Ġthe Ġinternal Ġfunction Ġuse Ġfor Ġnotify Ġthe Ġlist Ġchange Ġand Ġupdate Ġlayout ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġprocess Ġsort Ġbutton Ġfor Ġsorting Ġthe Ġdatas Ġ( Ġarray ) ĊĠĠĠĠĠĠĠ Ġprocess . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput . text ?. clear () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . clear () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . Config . getInstance (). tint Icon ( true ). apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Check _ Size ( Datas ) Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDat as . clear () ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġ" Minimum ĠTwo ĠNumbers ĠFor ĠSort ing ", ĠToast . LENGTH _ SHORT , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Check _ Size ( Datas ) Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDat as . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġ" Maximum ĠE ight ĠNumbers ĠFor ĠSort ing ", ĠToast . LENGTH _ SHORT , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecord st . result = Ġresult . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . Records Dao (). insert All ( record st ) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġclear Ġbutton Ġpress Ġonly Ġshow Ġup Ġwhen Ġthe Ġsorting Ġalready Ġdone ĊĠĠĠĠĠĠĠ Ġclear . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDat as . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear . visibility Ġ= ĠIN VISIBLE ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . action bar _ items , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . removeItem ( R . id . sorting ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . records Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , Ġrecord :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . about us Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , Ġabout :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊ Ċ } Ċ