Rumah >pembangunan bahagian belakang >Golang >hirisan golang terbalik

hirisan golang terbalik

PHPz
PHPzasal
2023-05-16 19:18:071569semak imbas

Bahasa Slice in Go sangat biasa digunakan Ia adalah tatasusunan dinamik yang boleh ditambah, dipadam dan diubah suai dengan mudah. Tetapi kadangkala kita perlu membalikkan elemen hirisan, contohnya, membalikkan {1, 2, 3, 4, 5} kepada {5, 4, 3, 2, 1}. menghiris terbalik.

  1. Menggunakan gelung untuk mencapai

Penyongsangan hirisan sebenarnya untuk menyusun elemen hirisan dalam susunan terbalik, yang boleh dicapai menggunakan gelung. Kaedah khusus adalah untuk mengalihkan elemen pertama hirisan ke hujung, elemen kedua ke kedua ke terakhir, dan seterusnya. Perlu diingatkan bahawa jika panjang hirisan adalah nombor ganjil, elemen tengah tidak perlu ditukar.

Berikut ialah pelaksanaan kod menggunakan gelung:

func reverse(s []int) {
    for i := 0; i < len(s)/2; i++ {
        j := len(s) - i - 1
        s[i], s[j] = s[j], s[i]
    }
}

Fungsi songsang dalam kod menerima kepingan jenis int sebagai parameter dan membalikkan kepingan ini. Mula-mula gunakan gelung for untuk melintasi separuh pertama unsur hirisan dan tukarkannya dengan elemen terakhir yang sepadan. Perlu diingatkan bahawa indeks j diperolehi oleh len(s)-i-1, kerana indeks unsur terakhir hirisan ialah len(s)-1, dan indeks unsur terakhir sepadan dengan i- elemen ke adalah len(s) -i-1. Apabila panjang hirisan ialah nombor ganjil, elemen tengah tidak perlu ditukar.

Gunakan fungsi ini untuk membalikkan kepingan jenis int dengan sebarang panjang, contohnya:

func main() {
    s1 := []int{1,2,3,4,5}
    reverse(s1)
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    reverse(s2)
    fmt.Println(s2)
}

Hasil output adalah seperti berikut:

[5 4 3 2 1]
[12 10 8 6 4 2]
  1. Gunakan perpustakaan standard fungsi untuk melaksanakan

Selain menggunakan gelung, perpustakaan standard juga menyediakan fungsi untuk membalikkan kepingan - terbalik. Fungsi ini ditakrifkan dalam pakej isihan dan digunakan seperti berikut:

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := []int{1,2,3,4,5}
    sort.Slice(s1, func(i, j int) bool { return i > j })
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    sort.Slice(s2, func(i, j int) bool { return i > j })
    fmt.Println(s2)
}

Fungsi sort.Slice dalam kod menerima dua parameter Parameter pertama ialah hirisan yang akan diterbalikkan, dan parameter kedua ialah fungsi A yang mentakrifkan peraturan untuk penyongsangan. Dalam fungsi ini, jika i lebih besar daripada j, ia kembali benar, menunjukkan bahawa i dan j perlu ditukar ke hadapan.

Perlu diambil perhatian bahawa fungsi sort.Slice hanya boleh beroperasi pada jenis yang mematuhi jenis.Antara muka antara muka, jadi jenis elemen hirisan perlu melaksanakan kaedah Len, Less dan Swap. Untuk kepingan jenis int, ia telah melaksanakan kaedah ini, jadi anda boleh terus menggunakan fungsi sort.Slice untuk melaksanakan operasi terbalik.

Gunakan fungsi isihan.Slice untuk membalikkan hirisan Kodnya adalah seperti berikut:

[5 4 3 2 1]
[12 10 8 6 4 2]

Kedua-dua kaedah boleh membalikkan hirisan dengan mudah. ​​Anda boleh memilih mengikut keadaan sebenar. Jika anda hanya perlu menterbalikkan sekali, adalah disyorkan untuk menggunakan kaedah gelung Jika anda perlu membalikkan beberapa kali, anda boleh mempertimbangkan untuk menggunakan fungsi isihan, kerana ia boleh menggunakan semula peraturan pengisihan dan meningkatkan kecekapan.

Atas ialah kandungan terperinci hirisan golang terbalik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn