Mencari Data Terurut
Pencarian biner
Mencari Data Terurut adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Mengapa Mencari Data Terurut
Setelah slice terurut, Anda dapat menemukan elemen jauh lebih cepat menggunakan pencarian biner daripada memeriksa setiap item.
Paket sort milik Go menyediakan pembantu pencarian yang berjalan dalam waktu logaritmik.
Linear vs Biner
Pencarian linear memeriksa setiap elemen satu per satu (O(n)). Pencarian biner membagi dua rentang pencarian pada setiap langkah (O(log n)), tetapi data harus terurut terlebih dahulu.
sort.SearchInts
sort.SearchInts menemukan indeks tempat suatu nilai berada, atau tempat nilai tersebut akan disisipkan agar slice tetap terurut. Slice harus sudah terurut dalam urutan menaik.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 3, 5, 7, 9}
i := sort.SearchInts(nums, 5)
fmt.Println("index:", i)
}Memastikan Kecocokan
SearchInts mengembalikan indeks meskipun nilainya tidak ada, yaitu titik penyisipannya. Selalu pastikan dengan memeriksa i < len(s) && s[i] == target.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 3, 5, 7}
target := 4
i := sort.SearchInts(nums, target)
found := i < len(nums) && nums[i] == target
fmt.Println("index:", i, "found:", found)
}Titik Penyisipan
Ketika suatu nilai tidak ada, indeks yang dikembalikan tepat menunjukkan tempat Anda harus menyisipkannya agar urutan tetap terjaga. Di sini, 4 akan ditempatkan pada indeks 2.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 3, 5, 7}
i := sort.SearchInts(nums, 4)
fmt.Println("insert 4 at index:", i)
}SearchStrings
sort.SearchStrings melakukan hal yang sama untuk slice string yang terurut.
package main
import (
"fmt"
"sort"
)
func main() {
words := []string{"apple", "cherry", "mango"}
i := sort.SearchStrings(words, "cherry")
fmt.Println("index:", i)
}sort.Search Umum
sort.Search adalah inti yang fleksibel. Anda memberikan panjang dan fungsi f yang menghasilkan false lalu true; fungsi ini mengembalikan indeks terkecil tempat f bernilai true.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{2, 4, 6, 8, 10}
i := sort.Search(len(nums), func(i int) bool {
return nums[i] >= 6
})
fmt.Println("first >= 6 at index:", i)
}Menemukan Elemen Pertama di Atas Batas
Karena sort.Search menemukan batas ketika kondisi berubah menjadi true, fungsi ini sangat cocok untuk kueri seperti nilai pertama yang lebih besar dari ambang batas.
package main
import (
"fmt"
"sort"
)
func main() {
scores := []int{10, 20, 30, 40}
i := sort.Search(len(scores), func(i int) bool {
return scores[i] > 25
})
fmt.Println("first > 25:", scores[i])
}Harus Terurut Terlebih Dahulu
Pencarian biner mengasumsikan adanya urutan. Jika slice tidak terurut, hasilnya tidak bermakna. Selalu urutkan sebelum mencari.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{9, 1, 5, 3}
sort.Ints(nums)
i := sort.SearchInts(nums, 5)
fmt.Println(nums, "-> index of 5:", i)
}Peningkatan Performa
Untuk slice berisi satu juta elemen, pencarian linear mungkin memeriksa satu juta item; pencarian biner hanya memeriksa sekitar 20. Biaya mengurutkan sekali terbayar jika Anda melakukan banyak pencarian.
Memilih Pembantu Pencarian
Ringkasan:
sort.SearchInts/SearchStrings/SearchFloat64s- slice bertipesort.Search- kondisi khusus pada data apa pun yang dapat diindeks
Pemeriksaan Cepat
Anda memanggil sort.SearchInts(s, 4) pada slice terurut yang tidak berisi 4. Apa yang dikembalikan?
Ringkasan
Mencari data terurut dengan pencarian biner:
- Data harus diurutkan terlebih dahulu
- Pembantu mengembalikan indeks atau titik penyisipan
- Pastikan kecocokan dengan pemeriksaan kesamaan
sort.Searchmenangani kondisi khusus
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mencari Data Terurut” gratis?
Ya — teks lengkap “Mencari Data Terurut” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mencari Data Terurut”?
Pencarian biner Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Mencari Data Terurut” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengurutkan Slice
- Urutan Pengurutan Kustom
- Mencari Data Terurut
- Pengurutan Stabil