Contoh Irisan Sortir Golang

Contoh Irisan Sortir Golang



Penyortiran adalah operasi pemrograman dasar yang mencakup penempatan elemen dalam urutan tertentu. Paket sortir, yang disediakan oleh pustaka resmi Go, menyertakan beberapa fungsi untuk mengurutkan irisan dengan cepat. Mengurutkan irisan adalah tugas umum di banyak aplikasi, mulai dari mengatur data untuk presentasi hingga mengoptimalkan algoritme pencarian. Artikel ini mengeksplorasi berbagai teknik pengurutan dan mendemonstrasikan penggunaannya di Go menggunakan paket sortir.

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 utama
impor (
'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 ] [ awal + J ]
})
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 utama
impor (
'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 utama
impor (
'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 utama
impor (
'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 utama
impor (
'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.