Search Dan Sort
Search Dan Sort
BAB 9
Searching and Sorting
1.Tujuan
a. Mampu menjelaskan mengenai algoritma Searching dan sorting
b. Mampu membuat dan mendeklarasikan struktural algoritma Searching
dan sorting
c. Mampu menerapkan dan mengimplementasikan algoritma Searching dan
sorting
Pendahuluan
Dalam ilmu komputer, searching (pencarian) dan sorting (pengurutan) adalah dua
operasi dasar yang sering digunakan dalam pengolahan data.
1.Pencarian (searching)
merupakan aktivitas yang hampir setiap hari dilakukan oleh kebanyakan orang
pemakai komputer maupun gadget dan smartphone.Pencarian data dilakukan
dengan cara menelusuri data-data yang tersimpan di dalam computer. Tempat
pencarian data dapat berupa array, dalam memori, file pada external storage
Pencarian data sering juga disebut table look-up atau storage and retrieval
information:Proses untuk mengumpulkan sejumlah informasi di dalam memory
komputer dan kemudian mencari kembali informasi yang diperlukan.
Algoritma Pencarian Teknik atau cara atau metode yang memiliki sebuah argumen
kunci dan dengan langkah-langkah tertentu akan mencari record (data simpanan)
dengan kunci tersebut.
Dua kemungkinan hasil, yaitu:
a. ditemukan (successful)
b. tidak ditemukan (unsuccessful)
Metode Pencarian
a. Pencarian internal (internal searching):semua record yang diketahui berada
dalam memory computer.
b. Pencarian eksternal (external searching):Tidak semua record yang diketahui
berada dalam memory komputer, tetapi ada sejumlah rekaman yang tersimpan
dalam penyimpan luar misalnya pita atau cakram magnetis.
Modul Struktur Data
0 1 2 3 4 5 6
6 -3 7 8 9 2 1
Value
a.Kemudian program akan meminta data yang akan dicari, misalnya 8(x = 8).
b. Iterasi : 8= 6 (tidak!)
8=-3 (tidak!)
8=7 (tidak!)
8=8 (Ya!) => output : “Ada” pada index ke-3
c.Jika sampai data terakhir tidak ditemukan data yang sama maka output : “ data
yang dicari tidak ada”.
Program dalam Bahasa c++:
Output Program:
Jika data yang dicari ada pada indeks
Jika Angka yang dicari tidak ada Pada Value.
Baris
3 5 9
6 7 -3
1 2 8
Kolom
a. Kemudian program akan meminta data yang akan dicari ,Misalnya x=9.
b. 1.Iterasi pertama (Baris ke-0):
Memeriksa elemen pertama pada baris 0, yaitu arr[0][0] = 3
8 != 3 → Output: 8 = 3 (Tidak!)
Memeriksa elemen kedua pada baris 0, yaitu arr[0][1] = 5
8 != 5 → Output: 8 = 5 (Tidak!)
Memeriksa elemen ketiga pada baris 0, yaitu arr[0][2] = 9
8 != 9 → Output: 8 = 9 (Tidak!)
Pada akhir iterasi pertama, data tidak ditemukan di baris 0.
2. Iterasi kedua (Baris ke-1):
Memeriksa elemen pertama pada baris 1, yaitu arr[1][0] = 6
8 != 6 → Output: 8 = 6 (Tidak!)
Memeriksa elemen kedua pada baris 1, yaitu arr[1][1] = 7
8 != 7 → Output: 8 = 7 (Tidak!)
Memeriksa elemen ketiga pada baris 1, yaitu arr[1][2] = -3
8 != -3 → Output: 8 = -3 (Tidak!)
Pada akhir iterasi kedua, data juga tidak ditemukan di baris 1.
3.Iterasi ketiga (Baris ke-2):
Memeriksa elemen pertama pada baris 2, yaitu arr[2][0] = 1
Modul Struktur Data
8 != 1 → Output: 8 = 1 (Tidak!)
Memeriksa elemen kedua pada baris 2, yaitu arr[2][1] = 2
8 != 2 → Output: 8 = 2 (Tidak!)
Memeriksa elemen ketiga pada baris 2, yaitu arr[2][2] = 8
8 == 8 → Output: 8 = 8 (Ya!) => data ditemukan pada indeks [2][2].
c. Jika sampai data terakhir tidak ditemukan data yang sama maka output : “
data yang dicari tidak ada”.
Program dalam Bahasa c++:
Modul Struktur Data
Ouput Program:
Jika angka yang dicari ada pada array 2 dimensi:
b. Binary Search
Metode pencarian yang kedua adalah binary search, pada metode pencarian ini,
data harus diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi .
menjadi dua bagian (secara logika), untuk setiap tahap pencarian.Syarat pencarian
biner data harus sudah dalam keadaan terurut. jika tidak,Maka harus Dilakukan
proses pengurutan terlebih dahulu.Contoh dalam kehidupan sehari -hari dalam
pencarian biner misalnya pencarian kata dalam kamus digital. Kemungkinan data
yang bisa muncul di Binary Search:
Kemungkinan Terbaik (best case): Best case terjadi ketika elemen yang dicari
berada di posisi tengah array pada iterasi pertama.Dalam hal ini, algoritma akan
segera menemukan elemen yang dicari tanpa perlu melanjutkan pencarian lebih
lanjut.Kompleksitas Waktu: O(1) (hanya membutuhkan satu perbandingan).
2. sorting (pengurutan) adalah salah satu proses yang banyak dijumpai dalam
aplikasi menggunakan komputer.Pengurutan membuat data disusun dalam keadaan
urut menurut aturan tertentu, misalnya dari terkecil menuju ke nilai terbesar untuk
Dalam praktek sering dijumpai hal-hal yang menggunakan pengurutan data seperti
1. Yellow pages berisi informasi telepon yang telah diurutkan menurut nama
perusahaan atau perorangan
2. Kamus berisi kata-kata yang telah diurutkan tanpa membedakan Huruf kecil dan
huruf besar
3. Laporan penjualan disusun berdasarkan produk terlaris hingga yang paling
sedikit terjual
4. File file dalam direktori ditampilkan urut berdasarkan atribut tertentu
5. Indeks buku berisi daftar istilah yang memudahkan pembaca mendapatkan
lokasi Halaman yang berisi istilah tersebut
6. Glossary dalam buku teks berisi istilah dan definisi nya, dengan nama-nama
istilah disusun urut.
Pengurutan dapat dilakukan menjadi dua jenis:
1.Ascending(Pengurutan Naik)
2.Descending(Pengurutan Turun)
Misalnya:Pengurutan Naik (Ascending) dapat dinyatakan dengan A-Z.
Pengurutan Turun (Descending) dapat dinyatakan dengan Z-A.
Algoritma Pengurutan data yang sering digunakan:
A. Bubble Sort Merupakan teknik pengurutan data yang membandingkan setiap
elemen data dengan seluruh elemen di dekatnya dan melakukan penukaran jika
memenuhi kriteria tertentu. metode ini merupakan cara yang paling sederhana
dalam pengurutan data, dengan sifat sangat cepat untuk menangani data yang
berjumlah sedikit dan menyita waktu lama untuk data yang sangat banyak.
Langkah-langkah dari algoritma bubble sort :
1) Menentukan data-data yang akan diurutkan dan disimpan dalam array
2) Melakukan pengulangan dari data-data tersebut
3) Melakukan perbandingan antara data yang satu dengan data yang lain , dimana
kalau data yang satu lebih kecil dari data yang lain, maka posisinya ditukar. Kalau
tidak , posisinya tetap
25 11 16 6 9 3
Proses 1:
25 11 16 6 9 3
25 11 16 6 3 9
25 11 16 3 6 9
25 11 3 16 6 9
25 3 11 16 6 9
3 25 11 16 6 9
Pada gambar di atas, pengecekan dimulai dari data yang paling akhir, kemudian
dibandingkan dengan data di depannya, jika data di depannya lebih besar maka
akan ditukar.
Proses 2: Tidak ada penukaran karna 6 < 9.
3 25 11 16 6 9
3 25 11 16 6 9
3 25 11 6 16 9
3 25 6 11 16 9
3 6 25 11 16 9
Pada proses ke-2, pengecekan dilakukan sampai dengan data ke-2 karena data
pertama pasting sudah paling kecil.
Prose 3:
3 6 25 11 16 9
3 6 25 11 9 16
3 6 25 9 11 16
3 6 9 25 11 16
Proses 4: Tidak ada penukaran karna 11 <
16..
3 6 9 25 11 16
3 6 9 25 11 16
3 6 9 11 25 16
Modul Struktur Data
Proses 5:
3 6 9 11 25 16
3 6 9 11 16 25
Berhenti disini karna data sudah terurut
Sintaks Program Fungsi Bubble Sort
Void bubble sort () {
For (int i=1; i<n; i++) {
For ( int j = n-1; j>=1; j--) {
If (data [j] < data [j-1] )
tukar (j, j-1); // ascending
}
}
}
Dengan Prosedur diatas data terurut naik (ascending) untuk urut turun (descending)
ubah bagian :
If (data [1] < data [j-1] ) menjadi
If (data [1] > data [j-1] )
Tukar (j, J-1);
Program dalam C++
Modul Struktur data
Output
B. Insertion sort Merupakan kombinasi antara sorting dan searching. Untuk setiap
proses, akan dicari elemenelemen yang belum diurutkan yang memiliki nilai
terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array.
Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini
akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data
kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses,
pembandingan dan pengubahan hanya dilakukan pada indeks pembandingan saja,
pertukaran data secara fisik terjadi pada akhir proses. Metode pengurutan seleksi
merupakan suatu metode yang melakukan pengurutan dengan menyisipkan data
yang belum urut ke dalam bagian data yang telah diurutkan, konsep seperti ini
biasanya dilakukan oleh para pemain kartu pemain selalu berusaha untuk membuat
kartu dalam keadaan urut Jika pemain mendapat kartu baru kartu akan disisipkan
pada lokasi yang membuat kartu tetap urut.meteode pengurutan insertion search:
a. Mulai dari elemen kedua: Anggap elemen pertama sudah terurut (karena satu
elemen selalu terurut). Mulai dari elemen kedua, periksa apakah elemen ini lebih
kecil daripada elemen sebelumnya.
b. Sisihkan elemen: Jika elemen tersebut lebih kecil, maka geser elemen-elemen
yang lebih besar ke kanan untuk memberi ruang bagi elemen tersebut.
Modul Struktur Data
b. Tempatkan elemen pada posisi yang tepat: Setelah menemukan posisi yang
tepat, sisipkan elemen tersebut ke posisi yang benar.
c. Ulangi untuk elemen berikutnya: Lanjutkan dengan elemen berikutnya dan
ulangi proses ini hingga seluruh array terurut.
Ilustrasi Insertion Sort:
Data Awal:
indeks
0 1 2 3 4 5
6 2 4 7 1 3
Proses 1: indeks
0 1 2 3 4 5
2 6 4 7 1 3
Ubah posisi indek 1 menjadi indeks karna 6 >2:
Proses 2: indeks
0 1 2 3 4 5
2 4 6 7 1 3
Ubah posisi indeks 2 menjadi indeks 1 karna 6>4.
Proses 3: indeks
0 1 2 3 4 5
2 4 6 7 1 3
Indeks 3 tetap pada tempatnya karna 6 <7.
Proses 4: indeks
0 1 2 3 4 5
1 2 4 6 7 3
Ubah Posisi indeks 4 menjadi indeks 1 karna 1<2
Proses 3: indeks
0 1 2 3 4 5
1 2 3 4 6 7
Ubah Posisi indeks 5 menjadi indeks 2 karna 3<4.
Hingga Menhasilkan data terurut seperti yang diatas.
Modul Struktur Data
Sintaks program fungsi Insertion Sort
void insertion_sort () {
int temp;
for(int i=1; i<n; i++) {
temp = data[i];
j = i-1;
while (data[j]>temp && j>=0) {
data[j+1] = data[j];
j--;
}
Data[j+1] = temp;
}
}
Dengan Prosedur diatas data terurut naik (ascending) untuk urut turun (descending)
ubah bagian :
while (data[j]>temp && j>=0) { menjadi
while (data[j] < temp && j >= 0)
Program dalam C++
Modul Struktur Data
Output:
C. Selection Sort disebut juga push down sort. Pada pengurutan dengan teknik ini
mula-mula suatu penunjuk (bisa kita beri nama dengan pos awal) menuju ke lokasi
awal pengurutan data. Pertama kali penunjuk menunjuk ke indeks 0 atau awal
array, Kemudian dicari bilangan terkecil yang berada pada posisi dari pos awal
hingga indeks elemen terakhir. isi elemen dengan bilangan terkecil tersebut dicatat
pada pos Min. apabila nilai pos awal tidak sama dengan nilai pos Min, elemen
yang ditunjuk kedua penunjuk tersebut ditukarkan, apabila cara tersebut dilakukan
dari pos awal bernilai 1 hingga n -1 (N menyatakan jumlah data), data dalam array
akan terurutkan.
Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil,
kemudian dilakukan penukaran dengan elemen ke-i.
Secara singkat metode ini bisa dijelaskan sebagai berikut.
Modul Struktur Data
a. Pada langkah pertama, dicari data yang terkecil dari data pertama sampai
terakhir. Kemudian data tersebut ditukar dari data pertama. Dengan
demikian, data pertama sekarang mempunyai nilai paling kecil dibanding
dengan data lain.
b. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data
terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua.
c. Demikian seterusnya sampai seluruh data terurut.
Ilustrasi Selection Search:
Output Program