Exemples de llesca d'ordenació de Golang

Exemples De Llesca D Ordenacio De Golang



L'ordenació és una operació de programació fonamental que inclou posar els elements en un ordre particular. El paquet d'ordenació, en què la biblioteca oficial de Go posa a disposició, inclou diverses funcions per ordenar ràpidament les rodanxes. L'ordenació de porcions és una tasca habitual en moltes aplicacions, des d'organitzar les dades per a la presentació fins a optimitzar els algorismes de cerca. Aquest article explora les diferents tècniques d'ordenació i demostra el seu ús a Go mitjançant el paquet de classificació.

Exemple 1: Golang Sort Slice en ordre ascendent

La funció 'sort.Slice()' és la funció principal de Go que reordena els elements de la secció en ordre ascendent o descendent. Tingueu en compte la següent il·lustració on la llesca està disposada en ordre ascendent:

paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
evenSlice := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( 'Porció sense classificar:' , evenSlice )
ordenar . Tallar ( evenSlice , func ( i , j int ) bool {
tornar evenSlice [ i ] < evenSlice [ j ]
})
fmt . Println ( 'Porció ordenada:' , evenSlice )
}

Al principi de la funció main(), definim el sector evenSlice amb els valors {10, 2, 8, 4, 0, 6}. Aquesta porció representa una col·lecció de nombres parells que inicialment no estan ordenats. Per ordenar la porció evenSlice, s'utilitza la funció sort.Slice() amb la porció. Dins de la funció sort.Slice(), es proporciona una funció d'ordenació com a argument. Aquesta funció determina l'ordre d'ordenació comparant els dos elements de la porció als índexs 'i' i 'j'. Si evenSlice[i] és menor que evenSlice[j], retorna true; en cas contrari, retorna false. La funció sort.Slice() utilitza aquesta funció de comparació per reordenar els elements de la secció 'evenSlice' en ordre ascendent.







Els resultats de la porció ordenada en ordre ascendent es generen a la següent pantalla de sortida:





Exemple 2: Golang Sort Part Slice

A continuació, l'ordenació s'aplica a la subslice del sector especificat en ordre ascendent mitjançant la funció sort.Slice() a Go.





paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
n := [] int { 9 , 7 , 3 , 5 }
començar := 0
final := 3
ordenar . Tallar ( n [ començar : final ], func ( i , j int ) bool {
tornar n [ començar + i ] < n [ començar + j ]
})
fmt . Println ( n )
}

Inicialment, creem la secció 'n' amb els valors [9, 7, 3, 5]. A més, dues variables, 'inici' i 'final', s'estableixen en 0 i 3, respectivament. Aquestes variables defineixen l'interval d'índexs de la secció “n” que s'ordenaran. La funció “sort.Slice()” s'anomena aleshores amb la sub-slice “n[inici:final]” com a primer argument. Aquesta subpart conté els elements de 'n' dins de l'interval especificat. Després d'això, es dóna una funció d'ordenació com a segon argument dins de la funció sort.Slice().

Aquí, aquesta funció rep dos índexs, 'i' i 'j', que representen els elements dins del subslice. Per comparar els elements dins del subslice, la funció d'ordenació accedeix als elements corresponents del sector original mitjançant l'inici. Desplaçament. Compara els n[inici+i] i n[inici+j] A continuació, la funció sort.Slice() utilitza la funció d'ordenació proporcionada per reordenar els elements dins de la subslice en ordre ascendent.



La sortida següent mostra que els elements dins de l'interval especificat (de principi a final-1) estan ordenats i els elements fora de l'interval es mantenen sense canvis:

Exemple 3: Golang Sort Integer Slice utilitzant la funció Sort.Ints().

A més, el més convenient per ordenar les porcions d'enters és la funció sort.Ints() sense la necessitat d'implementar els mètodes d'ordenació personalitzats. Actua directament sobre les rodanxes sencers i realitza una ordenació in situ. El programa següent ordena els nombres enters especificats:

paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
IntSlice := [] int { 10 , 13 , 15 , 11 , 14 , 12 }
fmt . Println ( 'Porció sense classificar:' , IntSlice )
ordenar . Ints ( IntSlice )
fmt . Println ( 'Porció ordenada:' , IntSlice )
}

Primer, declarem i inicialitzem el sector 'IntSlice' amb els valors [10, 13, 15, 11, 14, 12] que representen una col·lecció d'enters que inicialment no estan ordenats. A continuació, es crida la funció sort.Ints() amb la secció 'IntSlice' com a argument per ordenar la 'IntSlice'. La funció sort.Ints() en aquest cas ordena internament totes les parts del sector segons un algorisme d'ordenació optimitzat. Modifica directament la porció original, reordenant els seus elements en un ordre ordenat.

La sortida següent mostra primer que la porció sense ordenar es mostra primer, seguida de la porció ordenada:

Exemple 4: Golang Sort String Slice

Go també ofereix la funció sort.Strings() del paquet sort que s'utilitza per ordenar una porció de cadenes en un ordre específic. Aquí, el programa següent ajuda a ordenar la porció de cadenes:

paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
strSl := [] corda { 'golan' , 'python' , 'java' , 'perl' , 'mecanografiat' }
ordenar . Cordes ( strSl )
fmt . Println ( strSl )
}

Primer vam establir la secció “strSl” amb els valors [“golang”, “python”, “java”, “perl”, “typescript”] que no estan ordenats. Després d'això, ordenem el sector 'strSl' amb la funció sort.Strings() que ordena els elements del sector en ordre lexicogràfic. Aquesta funció modifica directament la porció original, reordenant els seus elements en ordre ordenat en funció dels seus valors ASCII.

La sortida ordena la secció de cadena de manera ascendent tal com es mostra a continuació:

Exemple 5: Golang Check Sort Slice utilitzant la funció IntAreSort().

Tanmateix, amb la funció sort.IntsAreSorted() de Go, podem comprovar si una part determinada d'enters està ordenada en ordre ascendent o no. Considereu el següent exemple de programa de la funció IntAreSort() per a la porció donada:

paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Println ( 'Llesques:' )
fmt . Println ( 'Porció sense classificar:' , sl )
resultat := ordenar . IntsAreSorted ( sl )
fmt . Println ( ' \n Resultat:' )
fmt . Println ( 'S'ha ordenat Slice?:' , resultat )
}

En primer lloc, una porció no ordenada de nombres enters aleatoris es defineix com a 'sl'. Aquesta porció conté una col·lecció de nombres enters sense cap ordre particular. A continuació, cridem a la funció sort.IntsAreSorted() i passem el sector 'sl' com a argument. Aquesta funció proporciona un resultat booleà que indica si l'entrada del sector està ordenada o no en ordre ascendent. Aleshores, la funció fmt.Println() imprimeix els resultats que mostren si el sector donat està ordenat o no segons el valor booleà retornat.

La sortida mostra false per a l'ordre d'ordenació d'una porció de nombres enters ja que no està ordenada:

Exemple 6: porció d'ordenació inversa de Golang

A més, utilitzant les funcions sortReverse() i sortStringSlice() del paquet d'ordenació de Go, podem ordenar inversament una porció de cadenes. El programa següent mostra el funcionament de la funció sort.Reverse():

paquet principal
importar (
'fmt'
'ordenar'
)
func principal () {
vocalSlice := [] corda { 'És' , 'a' , 'jo' , 'en' , 'O' }
fmt . Println ( 'Abans d'ordenar:' , vocalSlice )
ordenar . Ordena ( ordenar . Revés ( ordenar . StringSlice ( vocalSlice )))
fmt . Println ( 'Després d'ordenar :' , vocalSlice )
}

Comencem definint una porció de la cadena 'vowelSlice' que conté les vocals 'e', 'a', 'i', 'u' i 'o'. El contingut inicial de la part especificada de cadenes s'imprimeix primer mitjançant la funció 'imprimir'. A continuació, l'operació d'ordenació es realitza utilitzant la funció sort.Sort() amb les funcions sort.Reverse() i sort.StringSlice() com a arguments. Aquí, 'sort.Reverse()' crea un tipus nou que inverteix l'ordre dels elements. Pren el tipus 'sort.StringSlice' com a argument que converteix el vowelSlice en un tipus ordenable.

La sortida aquí mostra les vocals en ordre alfabètic invers:

Conclusió

Hem aprofundit en diverses funcions d'ordenació amb exemples que ordenen la porció proporcionada. També hem parlat de l'ordenació de sub-parts i comprovació de si una porció ja està ordenada. Per tant, podem aprofitar les capacitats del paquet de classificació per fer front a una àmplia gamma de reptes d'ordenació en els seus projectes Go.