Contoh 1: Slice Sortir Golang dalam Urutan Ascending
Fungsi “sort.Slice()” adalah fungsi terpenting di Go yang mengatur ulang elemen irisan dalam urutan menaik atau menurun. Perhatikan ilustrasi berikut di mana irisan disusun dalam urutan menaik:
kemasan utamaimpor (
'fmt'
'menyortir'
)
fungsi utama () {
evenSlice := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( 'Potongan yang tidak disortir:' , evenSlice )
menyortir . Mengiris ( evenSlice , fungsi ( Saya , J int ) bool {
kembali evenSlice [ Saya ] < genapSlice [ J ]
})
fmt . Println ( 'Potongan yang disortir:' , evenSlice )
}
Di awal fungsi main(), kita mendefinisikan irisan evenSlice dengan nilai {10, 2, 8, 4, 0, 6}. Irisan ini mewakili kumpulan bilangan genap yang awalnya tidak diurutkan. Untuk mengurutkan potongan evenSlice, fungsi sort.Slice() digunakan dengan potongan tersebut. Di dalam fungsi sort.Slice(), fungsi sortir disediakan sebagai argumen. Fungsi ini menentukan urutan pengurutan dengan membandingkan dua elemen irisan pada indeks “i” dan “j”. Jika evenSlice[i] kurang dari evenSlice[j], hasilnya benar; jika tidak, ia mengembalikan false. Fungsi sort.Slice() menggunakan fungsi perbandingan ini untuk mengatur ulang elemen irisan “evenSlice” dalam urutan menaik.
Hasil irisan yang diurutkan dalam urutan menaik dihasilkan di layar keluaran berikut:
Contoh 2: Golang Sort Part Slice
Selanjutnya, pengurutan diterapkan ke sub-irisan dari irisan yang ditentukan dalam urutan menaik menggunakan fungsi sort.Slice() di Go.
kemasan utama
impor (
'fmt'
'menyortir'
)
fungsi utama () {
N := [] int { 9 , 7 , 3 , 5 }
awal := 0
akhir := 3
menyortir . Mengiris ( N [ awal : akhir ], fungsi ( Saya , J int ) bool {
kembali N [ awal + Saya ]
})
fmt . Println ( N )
}
Awalnya, kami membuat irisan “n” dengan nilai [9, 7, 3, 5]. Selain itu, dua variabel, 'mulai' dan 'akhir', masing-masing ditetapkan ke 0 dan 3. Variabel-variabel ini menentukan kisaran indeks dalam potongan “n” yang akan diurutkan. Fungsi “sort.Slice()” kemudian dipanggil dengan sub-slice “n[start:end]” sebagai argumen pertama. Sub-irisan ini berisi elemen 'n' dalam rentang yang ditentukan. Setelah itu, fungsi pengurutan diberikan sebagai argumen kedua di dalam fungsi sort.Slice().
Di sini, fungsi tersebut menerima dua indeks, 'i' dan 'j', yang mewakili elemen di dalam sub-irisan. Untuk membandingkan elemen di dalam sub-irisan, fungsi pengurutan mengakses elemen yang sesuai di dalam irisan asli menggunakan awalan offset. Ini membandingkan n[mulai+i] dan n[mulai+j]. Selanjutnya, fungsi sort.Slice() menggunakan fungsi pengurutan yang disediakan untuk mengatur ulang elemen di dalam sub-irisan dalam urutan menaik.
Keluaran berikut menampilkan bahwa elemen dalam rentang yang ditentukan (mulai hingga akhir-1) diurutkan, dan elemen di luar rentang tetap tidak berubah:
Contoh 3: Golang Sort Integer Slice Menggunakan Fungsi Sort.Ints()
Selain itu, yang paling nyaman untuk mengurutkan irisan bilangan bulat adalah fungsi sort.Ints() tanpa perlu mengimplementasikan metode pengurutan khusus. Kerjanya langsung pada irisan bilangan bulat dan melakukan penyortiran di tempat. Program berikut mengurutkan bilangan bulat yang ditentukan:
kemasan utamaimpor (
'fmt'
'menyortir'
)
fungsi utama () {
IntSlice := [] int { 10 , 13 , limabelas , sebelas , 14 , 12 }
fmt . Println ( 'Potongan yang tidak disortir:' , IntSlice )
menyortir . Int ( IntSlice )
fmt . Println ( 'Potongan yang disortir:' , IntSlice )
}
Pertama, kita mendeklarasikan dan menginisialisasi irisan “IntSlice” dengan nilai [10, 13, 15, 11, 14, 12] yang mewakili kumpulan bilangan bulat yang awalnya tidak disortir. Kemudian, fungsi sort.Ints() dipanggil dengan irisan “IntSlice” sebagai argumen untuk mengurutkan “IntSlice”. Fungsi sort.Ints() dalam hal ini secara internal mengurutkan setiap bagian dari irisan sesuai dengan algoritme pengurutan yang dioptimalkan. Itu memodifikasi irisan asli secara langsung, mengatur ulang elemennya menjadi urutan yang diurutkan.
Keluaran berikut pertama menunjukkan bahwa irisan yang tidak disortir ditampilkan terlebih dahulu, diikuti oleh irisan yang diurutkan:
Contoh 4: Slice String Sortir Golang
Go juga menawarkan fungsi sort.Strings() dari paket sort yang digunakan untuk mengurutkan potongan string dalam urutan tertentu. Di sini, program berikut membantu mengurutkan irisan string:
kemasan utamaimpor (
'fmt'
'menyortir'
)
fungsi utama () {
strSl := [] rangkaian { 'golan' , 'ular piton' , 'Jawa' , 'perl' , 'naskah' }
menyortir . String ( strSl )
fmt . Println ( strSl )
}
Kami pertama kali membuat irisan 'strSl' dengan nilai ['golang', 'python', 'java', 'perl', 'TypeScript'] yang tidak diurutkan. Setelah itu, kita mengurutkan irisan “strSl” dengan fungsi sort.Strings() yang mengurutkan elemen irisan dalam urutan leksikografis. Fungsi ini memodifikasi irisan asli secara langsung, menata ulang elemen-elemennya menjadi urutan terurut berdasarkan nilai ASCII-nya.
Output mengurutkan potongan string dengan cara menaik seperti yang ditampilkan berikut ini:
Contoh 5: Golang Check Sort Slice Menggunakan Fungsi IntAreSort()
Namun, dengan fungsi sort.IntsAreSorted() dari Go, kita dapat memeriksa apakah potongan bilangan bulat yang diberikan diurutkan dalam urutan menaik atau tidak. Pertimbangkan contoh program berikut dari fungsi IntAreSort() untuk irisan yang diberikan:
kemasan utamaimpor (
'fmt'
'menyortir'
)
fungsi utama () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Println ( 'Irisan:' )
fmt . Println ( 'Irisan yang Tidak Disortir:' , sl )
hasil := menyortir . IntsAreSorted ( sl )
fmt . Println ( ' \N Hasil:' )
fmt . Println ( 'Apakah Slice yang diberikan diurutkan?: ' , hasil )
}
Pertama, irisan bilangan bulat acak yang tidak disortir didefinisikan sebagai 'sl'. Irisan ini berisi kumpulan bilangan bulat tanpa urutan tertentu. Selanjutnya, kita memanggil fungsi sort.IntsAreSorted() dan meneruskan potongan “sl” sebagai argumen. Fungsi ini memberikan hasil Boolean yang menunjukkan apakah input irisan disusun dalam urutan menaik atau tidak. Kemudian, fungsi fmt.Println() mencetak hasil yang menampilkan apakah irisan yang diberikan diurutkan atau tidak berdasarkan nilai Boolean yang dikembalikan.
Output menampilkan salah untuk urutan pengurutan dari sepotong bilangan bulat karena tidak disortir:
Contoh 6: Slice Sortir Terbalik Golang
Selanjutnya, dengan menggunakan fungsi sortReverse() dan sortStringSlice() dari paket sortir di Go, kita dapat mengurutkan balik sebuah potongan string. Program berikut mendemonstrasikan cara kerja fungsi sort.Reverse() :
kemasan utamaimpor (
'fmt'
'menyortir'
)
fungsi utama () {
vokalSlice := [] rangkaian { 'Dia' , 'A' , 'Saya' , 'di dalam' , 'HAI' }
fmt . Println ( 'Sebelum menyortir :' , vokalSlice )
menyortir . Menyortir ( menyortir . Balik ( menyortir . StringSlice ( vokalSlice )))
fmt . Println ( 'Setelah menyortir :' , vokalSlice )
}
Kita mulai dengan mendefinisikan potongan string “vowelSlice” yang berisi vokal “e”, “a”, “i”, “u”, dan “o”. Konten awal dari irisan string yang ditentukan dicetak terlebih dahulu menggunakan fungsi 'cetak'. Selanjutnya, operasi pengurutan dilakukan menggunakan fungsi sort.Sort() dengan fungsi sort.Reverse() dan sort.StringSlice() sebagai argumen. Di sini, 'sort.Reverse()' membuat tipe baru yang membalikkan urutan elemen. Dibutuhkan tipe 'sort.StringSlice' sebagai argumennya yang mengubah vokalSlice menjadi tipe yang dapat diurutkan.
Output di sini menampilkan vokal dalam urutan abjad terbalik:
Kesimpulan
Kami mempelajari berbagai fungsi penyortiran dengan contoh yang mengurutkan potongan yang disediakan. Kita juga membahas tentang pengurutan sub-irisan dan memeriksa apakah sebuah irisan sudah diurutkan. Oleh karena itu, kami dapat memanfaatkan kemampuan paket pengurutan untuk mengatasi berbagai tantangan pengurutan dalam proyek Go mereka.