Golang Sort Slice Primeri

Golang Sort Slice Primeri



Razvrščanje je temeljna programska operacija, ki vključuje postavljanje elementov v določen vrstni red. Paket za razvrščanje, v katerem je na voljo uradna knjižnica Go, vključuje več funkcij za hitro razvrščanje rezin. Razvrščanje rezin je običajna naloga v številnih aplikacijah, od organiziranja podatkov za predstavitev do optimizacije iskalnih algoritmov. Ta članek raziskuje različne tehnike razvrščanja in prikazuje njihovo uporabo v Go z uporabo paketa za razvrščanje.

1. primer: Golang razvrsti rezino v naraščajočem vrstnem redu

Funkcija »sort.Slice()« je najpomembnejša funkcija v Go, ki prerazporedi elemente rezine v naraščajočem ali padajočem vrstnem redu. Upoštevajte naslednjo sliko, kjer je rezina urejena v naraščajočem vrstnem redu:

paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
evenSlice := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( 'Nerazvrščena rezina:' , evenSlice )
vrsta . Rezina ( evenSlice , funk ( jaz , j int ) bool {
vrnitev evenSlice [ jaz ] < evenSlice [ j ]
})
fmt . Println ( 'Razvrščena rezina:' , evenSlice )
}

Na začetku funkcije main() definiramo rezino evenSlice z vrednostmi {10, 2, 8, 4, 0, 6}. Ta rezina predstavlja zbirko sodih števil, ki na začetku niso razvrščena. Za razvrščanje rezine evenSlice je z rezino uporabljena funkcija sort.Slice(). Znotraj funkcije sort.Slice() je kot argument na voljo funkcija za razvrščanje. Ta funkcija določa vrstni red razvrščanja s primerjavo dveh elementov rezine pri indeksih 'i' in 'j'. Če je evenSlice[i] manjši od evenSlice[j], vrne true; sicer vrne false. Funkcija sort.Slice() uporablja to primerjalno funkcijo za prerazporeditev elementov rezine »evenSlice« v naraščajočem vrstnem redu.







Rezultati razvrščene rezine v naraščajočem vrstnem redu so ustvarjeni na naslednjem izhodnem zaslonu:





Primer 2: Golang Sort Part Slice

Nato se razvrščanje uporabi za podrezino podane rezine v naraščajočem vrstnem redu s funkcijo sort.Slice() v Go.





paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
n := [] int { 9 , 7 , 3 , 5 }
začetek := 0
konec := 3
vrsta . Rezina ( n [ začetek : konec ], funk ( jaz , j int ) bool {
vrnitev n [ začetek + jaz ] < n [ začetek + j ]
})
fmt . Println ( n )
}

Na začetku ustvarimo rezino »n« z vrednostmi [9, 7, 3, 5]. Poleg tega sta dve spremenljivki, »začetek« in »konec«, nastavljeni na 0 oziroma 3. Te spremenljivke določajo obseg indeksov v rezini »n«, ki bo razvrščen. Funkcija »sort.Slice()« se nato pokliče s podrezino »n[start:end]« kot prvim argumentom. Ta podrezina vsebuje elemente 'n' znotraj navedenega obsega. Po tem je funkcija za razvrščanje podana kot drugi argument znotraj funkcije sort.Slice().

Tu ta funkcija prejme dva indeksa, »i« in »j«, ki predstavljata elemente znotraj podrezine. Za primerjavo elementov znotraj podrezine funkcija razvrščanja dostopa do ustreznih elementov v izvirni rezini z začetkom odmik. Primerja n[start+i] in n[start+j].Nato funkcija sort.Slice() uporablja navedeno funkcijo razvrščanja za prerazporeditev elementov znotraj podrezine v naraščajočem vrstnem redu.



Naslednji izhod prikazuje, da so elementi znotraj podanega obsega (od začetka do konca-1) razvrščeni, elementi zunaj obsega pa ostanejo nespremenjeni:

Primer 3: Celoštevilska rezina razvrščanja Golang z uporabo funkcije Sort.Ints().

Poleg tega je najprimernejša za razvrščanje rezin celih števil funkcija sort.Ints() brez potrebe po izvajanju metod razvrščanja po meri. Deluje neposredno na celoštevilske rezine in izvaja razvrščanje na mestu. Naslednji program razvrsti navedena cela števila:

paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
IntSlice := [] int { 10 , 13 , petnajst , enajst , 14 , 12 }
fmt . Println ( 'Nerazvrščena rezina:' , IntSlice )
vrsta . Int ( IntSlice )
fmt . Println ( 'Razvrščena rezina:' , IntSlice )
}

Najprej deklariramo in inicializiramo rezino »IntSlice« z vrednostmi [10, 13, 15, 11, 14, 12], ki predstavljajo zbirko celih števil, ki na začetku niso razvrščena. Nato se pokliče funkcija sort.Ints() z rezino »IntSlice« kot argumentom za razvrščanje »IntSlice«. Funkcija sort.Ints() v tem primeru interno razvrsti vsak del rezine v skladu z optimiziranim algoritmom razvrščanja. Neposredno spremeni prvotno rezino in preuredi njene elemente v razvrščeni vrstni red.

Naslednji izhod najprej pokaže, da je najprej prikazana nerazvrščena rezina, ki ji sledi razvrščena rezina:

Primer 4: rezina niza za razvrščanje Golang

Go ponuja tudi funkcijo sort.Strings() paketa sort, ki se uporablja za razvrščanje rezin nizov v določenem vrstnem redu. Tukaj naslednji program pomaga razvrstiti rezine nizov:

paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
strSl := [] vrvica { 'golan' , 'python' , 'java' , 'perl' , 'tipkopis' }
vrsta . Strune ( strSl )
fmt . Println ( strSl )
}

Najprej smo vzpostavili rezino »strSl« z vrednostmi [»golang«, »python«, »java«, »perl«, »typescript«], ki niso razvrščene. Nato rezino »strSl« razvrstimo s funkcijo sort.Strings(), ki razvrsti elemente rezine v leksikografskem vrstnem redu. Ta funkcija neposredno spremeni izvirno rezino in preuredi njene elemente v razvrščen vrstni red na podlagi njihovih vrednosti ASCII.

Izhod razvrsti rezino niza v naraščajočem načinu, kot je prikazano v naslednjem:

Primer 5: Golang Check Sort Slice z uporabo funkcije IntAreSort().

Vendar pa lahko s funkcijo sort.IntsAreSorted() Go preverimo, ali je določena rezina celih števil razvrščena v naraščajočem vrstnem redu ali ne. Razmislite o naslednjem primeru programa funkcije IntAreSort() za dano rezino:

paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Println ( 'Rezine:' )
fmt . Println ( 'Nerazvrščena rezina: ' , sl )
rezultat := vrsta . IntsAreSorted ( sl )
fmt . Println ( ' \n Rezultat:' )
fmt . Println ( 'Ali je dana rezina razvrščena?:' , rezultat )
}

Najprej je nerazvrščena rezina naključnih celih števil definirana kot 'sl'. Ta rezina vsebuje zbirko celih števil brez določenega vrstnega reda. Nato pokličemo funkcijo sort.IntsAreSorted() in kot argument posredujemo rezino »sl«. Ta funkcija zagotavlja logični rezultat, ki kaže, ali je vnos rezine urejen v naraščajočem vrstnem redu ali ne. Nato funkcija fmt.Println() natisne rezultate, ki izpišejo, ali je dana rezina razvrščena ali ne glede na vrnjeno logično vrednost.

Izhod prikaže false za vrstni red razvrščanja rezine celih števil, ker ni razvrščen:

6. primer: rezina obratnega razvrščanja Golang

Poleg tega lahko z uporabo funkcij sortReverse() in sortStringSlice() iz paketa za razvrščanje v Go obrnemo razvrstitev rezine nizov. Naslednji program prikazuje delovanje funkcije sort.Reverse():

paket glavni
uvoz (
'fmt'
'vrsta'
)
funk glavni () {
vowelSlice := [] vrvica { 'Je' , 'a' , 'jaz' , 'v' , 'O' }
fmt . Println ( 'Pred razvrščanjem:' , vowelSlice )
vrsta . Razvrsti ( vrsta . Vzvratno ( vrsta . StringSlice ( vowelSlice )))
fmt . Println ( 'Po  razvrščanju:' , vowelSlice )
}

Začnemo z definiranjem rezine niza 'vowelSlice', ki vsebuje samoglasnike 'e', 'a', 'i', 'u' in 'o'. Začetna vsebina podane rezine nizov se najprej natisne s funkcijo »print«. Nato se izvede operacija razvrščanja s funkcijo sort.Sort() s funkcijama sort.Reverse() in sort.StringSlice() kot argumentoma. Tukaj 'sort.Reverse()' ustvari nov tip, ki obrne vrstni red elementov. Kot argument vzame tip »sort.StringSlice«, ki pretvori vowelSlice v tip, ki ga je mogoče razvrstiti.

Izhod tukaj prikaže samoglasnike v obratnem abecednem vrstnem redu:

Zaključek

Poglobili smo se v različne funkcije razvrščanja s primeri, ki razvrščajo podano rezino. Pogovarjali smo se tudi o razvrščanju podrezin in preverjanju, ali je rezina že razvrščena. Zato lahko izkoristimo zmogljivosti paketa za razvrščanje, da se spoprimemo s širokim naborom izzivov razvrščanja v njihovih projektih Go.