- Back to Home »
- Algoritma , Insertion , Sisipan »
- Algoritma - Sisipan (Insertion)
Posted by : Just Nanda...
Monday, December 23, 2013
Contoh Menyisip |
Pada kesempatan kali ini saya ingin membagikan cerita mengenai Algoritma Sisipan. Jadi disini saya membagikan pandangan dan pemahaman saya tentang algoritma ini. Jadi ceritanya ini algoritma yang bakal kita gunakan untuk mengurutkan data dari kecil kebesar namun tidak menggunakan Sorting. Gak tau kenapa, saya kurang suka pake Sorting. Agak ribet dan gak santai. Hahahaha...
Jadi konsepnya begini, ketika sebuah nilai dimasukkan ke dalam array, maka akan di cek dimana posisi dari nilai tersebut seharusnya akan diletakan. Setelah posisi dari nilai tersebut di temukan, maka program akan menggeser nilai-nilai berikutnya agar ada tempat untuk nilai yang baru tanpa adanya data yang hilang. Syarat bisa terjadinya sisipan ini adalah nilai harus terurut, karena dengan terurutnya data, akan mudah kita menemukan tempat untuk menyisip. Jadi konsep sisipan ini digunakan untuk melakukan pengurutan (Lebih tepatnya mungkin :D).
Agar dapat sedikit gambaran, silahkan lihat ilustrasi berikut:
Pertama-tama array telah diisi seperti diatas. Kemudian datang nilai baru yaitu 9. Maka 9 akan mencari tempat nilai ini seharusnya diletakkan.
Nilai 9 telah menemukan posisi dia seharusnya, sehingga nilai-nilai setelahnya harus digeser kebawah agar ada ruang untuk nilai 9.
Nilai-nilai telah digeser sehingga nilai 9 bisa masuk tanpa merusak nilai yang telah ada.
Nilai 9 telah masuk kedalam array.
Adapun algoritma yang saya gunakan untuk melakukan aktivitas diatas adalah sebagai berikut
Asumsi:
a[100];
na=jumlah data dalam array;
x=data baru;
//insert
j = na;
while (i < j)
{
if (a[i] < x)
{
i++;
}
else
{
while (j > i)
{
a[j] = a[j-1];
j--;
}
}
}
a[i] = x;
na = na + 1;
Deklarasi "j = na;" berguna untuk menjaga nilai na agar tidak berubah dalam proses perulangan karena na berfungsi untuk menghitung jumlah data yang ada dalam array. Perulangan "while (i < j)" digunakan untuk melakukan pengecekan dari i hingga j untuk menemukan posisi dari x. Apabila nilai a[i] < x maka nilai i ditambah 1 menggunakan statement "i++;" agar pencarian posisi bergerak ke indeks berikutnya. Namun jika ditemukan a[i] >= x itu berarti bahwa x telah menemukan posisi seharusnya. Sehingga dari posisi tersebut hingga posisi ke j harus digeser. Agar data tersebut bisa bergeser maka dilakukan perulangan "while (j > i)" agar dari indeks terakhir hingga nilai i sebagai posisi x akan di geser menggunakan statement " a[j] = a[j-1];". Setelah penggeseran selesai, maka nilai i dan j akan sama, sehingga mengindikasikan bahwa perulangan "while (i < j)" tidak akan dilanjutkan dan dilanjutkan pada statement a[i] = x;" yang berarti nilai array dengan indeks i adalah x karena i saat ini adalah posisi yang seharusnya bagi nilai x. Dan setelah pemasukkan nilai x ke dalam array dengan indeks i maka nilai dari na telah bertambah 1. Agar penambahan nilai tersebut dapat terjadi kita gunakan statement "na = na + 1;".
Saya rasa cukup penjelasan mengenai algoritma pengurutan menggunakan metode sisipan. Apabila pengurutan dari besar ke kecil, teman-teman tinggal mengganti tanda < menjadi > pada bagian "if (a[i] < x)" menjadi "if (a[i] > x)".
Apabila ada salah kata dan penulisan saya mohon maaf. :D