My first Magazine pemrograman-kompetitif-dasar | Page 39

3.2 Pengurutan 1 1 3 5 5 6 7 kanan kiri Gambar 3.6: Tahap 6: Temukan lagi indeks tengah yaitu nilai tengah dari kiri dan kanan dan bandingkan nilainya dengan nilai yang dicari. Ternyata nilai pada indeks tengah adalah 3. Dengan demikian pencarian berhasil. 3.1.3 Rangkuman Secara umum, kedua algoritma pencarian dapat dirangkumkan sebagai berikut. Sequential search • Data untuk pencarian tidak perlu terurut. • Kompleksitasnya O(N), dengan N adalah ukuran data. • Baik diimplementasikan jika pencarian hanya dilakukan sesekali. Binary search • Data untuk pencarian harus terurut. • Kompleksitasnya O(log N), dengan N adalah ukuran data. • Baik diimplementasikan jika pencarian perlu dilakukan berkali-kali. Bagaimana jika kita memiliki data yang sangat banyak, tidak terurut, dan butuh pencarian yang efisien? Salah satu solusinya adalah dengan mengurutkan data tersebut, lalu mengaplikasikan binary search untuk setiap pencarian. 3.2 Pengurutan Pengurutan sering digunakan dalam pemrograman untuk membantu membuat data lebih mudah diolah. Terdapat berbagai macam cara untuk melakukan pengurutan, masing-masing dengan keuntungan dan kekurangannya. Contoh Soal 3.2: Bebek Berbaris Sebelum masuk ke dalam kandang, para bebek akan berbaris terlebih dahulu. Seiring dengan berjalannya waktu, bebek-bebek tumbuh tinggi. Pertumbuhan ini berbeda-beda; ada bebek yang lebih tinggi dari bebek lainnya. Terdapat N ekor bebek, bebek ke-i memiliki tinggi sebesar h i . Perbedaan tinggi ini menyebabkan barisan terlihat kurang rapi, sehingga Pak Dengklek ingin bebek-bebek berbaris dari yang paling pendek ke paling tinggi. Bantulah para bebek untuk mengurutkan barisan mereka! Batasan • 1 ≤ N ≤ 1.000 • 1 ≤ h i ≤ 100.000, untuk 1 ≤ i ≤ N 29