Selasa, 30 Juni 2009

Searching Data

Searching data.. adalah program untuk melakukan pencarian satu data dari kumpulan beberapa data (array).. Ada 2 cara untuk melakukan searching data.. Yaitu, Sequence Search dan Biner Search.. Untuk lebih jelasnya tentang Sequence dan Biner search liat aj, di bawah nie.. Otreh..?

<1.>
Sequence search merupakan salah satu cara untuk melakukan searching data.. Namun cara ini sudah mulai ditinggalkan.. Karena proses pencarian yang dilakukan Sequence Search tergolong sangat lama.. Karena Sequence, melakukan pencarian, dengan mengecek data satu persatu.. Berbanding terbalik dengan Binary Search.. Yang memerlukan waktu untuk melakukan pencarian data jauh lebih singkat.. Mungkin untuk jumlah data 10 - 20 tidak ada perbedaan waktu yang cukup signitifkan antara keduanya.. Namun bayangkan, jika data yang ada mencapai puluhan, ribuan, atau bahkan jutaan.. Sequence search bisa memakan waktu lebih dari seminggu untuk mencari data yang mencapai puluhan juta..

<2.>
Binary search merupakan program pencarian data dengan mengelompokkan/mengurutkan datanya terlebih dahulu sehingga waktu yang dibutuhkan untuk searching data jauh lebih singkat karena program akan langsung mengarahkan pencarian ke kelompok/urutan data tersebut dibandingkan mengecek satu demi satu data tersebut.. Untuk membuatnya memang qta harus mengurutkan data terlebih dahulu ( bisa dengan Bubble, sequence, exchange, insertion, ataupun quick sort ) setelah itu, baru qta buat algoritma searcingnya.. Program ini memang lebih rumit dari pada Sequence Search, tapi dosen algoritma aku, cenderung menyuruh aku untuk menggunakan program ini untuk membuat program searching data.. Cz kata beliau (ciee, beliau.. :-) ), sebagai programmer qta harus lebih mengutamakan kepuasan pengguna.. Tidak apa2, qta membuat program rumit2, yang penting pengguna program kita puas.. Ga mungkin kan, qta di bayar, tapi mengecewakan pelanggan dengan membuat program yang LOLA ( Loadingnya Lambat beneerr.. ) Hehee..

Quick Sort

<5.quick>

Quick sort adalah program sorting data tercepat dari program sorting data yang lain.. ( katanya dosen algoritma aku sie gitu.. hehee )
Itu karena namanya.. Quick Sort.. Yea, pantes'an cepet.. Hee, Q'dink..
Bukan cuma karena namanya aj, kq.. Tapi terlebih dari cara kerja program ini, yang memang sangat cepat dalam mengurutkan data.. Liat aja, sintax'nya.. Wuih rumit banget.. Q aj, sampe' mual2 liat sintax'nya.. Hehee..
Tapi dibalik kerumitan itu.. Q coba bahas deh.. Yang penting nilai tugas Prak. Algoritma, Q ini GEDE ! (Ngarep) Hehee..
Cara kerja Quick SOrt nie adalah membandingkan suatu elemen (disebut pivot) dengan elemen lain dan menyusun sedemikian rupa sehingga elemen lain yang lebih kecil dari pada pivot tersebut terletak disebelah kirinya.. Dan elemen yang lain yang lebih besar dari pada pivot tersebut terletak disebelah kanannya..
Sehingga dengan demikian telah terbentuk dua sublist, yang terletak disebelah kiri dan kanan pivot.. Lalu pada sublist kiri dan kanan kita anggap sebuah list baru dan kita kerjakan proses yang sama seperti sebelumnya. Demikian seterusnya sampai tidak terdapat sublist lagi. Sehingga di dalamnya telah terjadi proses rekursif..
Nah lho? Ngerti gG..? Hehee.. Gini deh..
Q kasi'in contohnya aj.. Sapa tau lebih jelas..
Misalnya.. Kita punya data belum terurut seperti di bawah ini..

22 10 15 3 8 2

Nah, ceritanya kita bakal ngurut'in nie data secara ascending dengan Quick Sort..

Langkah 1
Pivot terletak di tengah2 data tersebut
jumlah data di atas brapa? 6 kan? nah.. Jadi pivotnya terletak di elemen ke-3..
Pivot = 15..
Sekarang untuk dua sublistnya aku kasi nama deh.. Yang tugas ngecek disebelah kiri aku kasi' nama Mr. A truz yang tugas ngecek disebelah kanan aku kasi' nama Mr. B..
Inget.. Dari penjelasan tadi, sublist yang di kiri musti lebih kecil dari pivot truz sublist yang di kanan musti lebih besar dari pivot..

Mr.A<-----
22 10 | 15 |3 8 2
----->Mr.B


Mr.A berhenti di elemen pertama, karena dia menemukan angka 22 lebih besar dari pivot (15)..
Dan J berhenti di elemen ke 6, karena dia menemukan angka 2 lebih kecil dari pivot (15)..
Maka program akan menukar posisi di elemen pertama dengan elemen keenam.. Artinya posisi 22 ditukar dengan 2.. Jadi urutannya sekarang..
2 10 15 3 8 22

Langkah 2


Mr.A<----
2 10 | 15 | 3 8 22
------>Mr.B

Mr A berhenti di elemen ketiga, karena dia menemukan angka 15 lebih besar/sama dengan pivot (15).. eNd Mr.B berhenti di elemen ke 5, karena dia nemu'in elemen yang lebih kecil dari pivot(15)..
program nuker lagi nie, posisinya 15, dituker dengan posisinya 8.. Jadi urutannya..
2 10 8 3 15 22

Langkah 3
Karena pivotnya yang terpindah pada langkah ke-2 tadi, sekarang program akan membentuk 2 sublist baru..
Jadi pivotnya sekarang adalah 8..

Mr.A<----
2 10 | 8 | 3 15 22
-------->Mr.B

Mr. A berhenti pada elemen ke 2, karena dia nemu'in 10 lebih besar dari pivot (8).. Truz, sie Mr.B berhenti pada elemen ke 4, karena dia nemu'in 3 yang nilainya lebih kecil dari pivot(8)..
Slanjutnya program nuker, posisi 10 dengan 3.. Maka urutannya menjadi..
2 3 8 10 15 22

FINISh.. Nah data sudah terurut secara ascending kan..
Yea, walaupun terlihat rumit tapi dalam kenyataannya, program ini sangat cepat dalam mengurutkan data dibandingkan dengan program lain..

Insertion Sort

<3.insertion>
Insertion Sort.. Hmm..
Dari namanya aj udah bisa nebak kan..?
Yupz bener banget..
Insertion berasal dari kata Insert yang artinya menyisipkan..
Jadi, cara kerja program ini adalah dengan menyisipkan..
Yea tinggal sisip2'in aj.. Tapi bukan menyisipkan yang aneh2 lho.. Hehee..
Bersumber dari buku yang aku baca nie..
Insertion Sort itu adalah pengurutan dengan cara membandingkan data ke-I ( dimana I dimulai dari data ke-2 sampai dengan data terakhir ) dengan data berikutnya. Jika ditemukan data yang lebih kecil, maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya..
Nah lho, ngerti gg?
Yea, biasa..
Bahasa yang ada dibuku memang agak susah dimengerti.. Hehee..
Tapi tenang aj.. Sapa tau dengan ngeliat contoh yg Q buat, ente-ente pada ngerti.. :)
Contoh acending sort dengan insertion.. Misalkan kita punya data yang belum terurut seperti ini..

22 10 15 3 8 2

temp ( sebagai penunjuk posisi yang elemen yang akan dibandingkan, dimulai dari posisi ke 2 kemudian ke posisi 3 begitu selanjutnya )

Langkah 1
temp = 10
temp <> posisi 2 )
temp menempati posisi 1, jadi urutannya menjadi
10 22 15 3 8 2
Langkah 2
temp = 15
temp <> posisi 3 )
temp < 10 ( Salah! )
temp menempati posisi 2, jadi urutannya sekarang
10 15 22 3 8 2
Langkah 3
temp = 3
temp <> posisi 4 )
temp <> posisi 3 )
temp <> posisi 2 )
temp menempati posisi 1, dan urutannya menjadi
3 10 15 22 8 2
Langkah 4
temp = 8
temp <> posisi 5 )
temp <> posisi 4 )
temp <> posisi 3 )
temp < 3 ( Salah! )
temp menempati posisi 2, urutannya menjadi
3 8 10 15 22 2
Langkah 5
temp = 2
temp <> posisi 6 )
temp <> posisi 5 )
temp <> posisi 4 )
temp <> posisi 3 )
temp <> posisi 2 )
temp menempati posisi 1, dan urutannya akhirnya berubah menjadi
2 3 8 10 15 22

Huff, slesai juga..
Smoga ngerti yaa..
Biar ga rugi aku cape' - cape' nulis..
Hehee..

Selasa, 23 Juni 2009

Selection Sort !

<2.selection>
Klo Selection Sort, katanya buyut gw sie, adalah ngebanding'in elemen yang sekarang dengan elemen yang berikutnya sampe' terakhir.. Truz, klo di temu'in elemen yang lebih kecil dari elemen yang sekarang maka, maka akan dicatat posisinya, truz di tukar dah.. Gitu seterusnya.. ( btw, buyut gw mantep yach.. Dah modern.. Hwahaha )
Nich, aku kasi'in contoh ascending sortnya..

22 10 15 3 8 2

Langkah 1
Program bakalan ngecek..
22 > 10 Pointer berpindah ke posisi 2 yaitu 10
10 <> 3 Pointer berpindah ke posisi 4 yaitu 3
3 > 2 Pointer pindah ke posisi 6 yaitu 2
langkah selanjutnya adalah menukar 22 dengan elemen yang ada di posisi 6, yaitu 2..
Jadi urutannya adalah..
2 10 15 3 8 22

Langkah 2
Program bakal ngecek lagi..
Dimulai dari elemen di posisi 2..
10 < 15 Pointer tidak berpindah
10 > 3 Pointer pindah ke posisi 4 yaitu 3
3 < 8 Pointer tidak berpindah
3 < 22 Pointer tidak berpindah
program menukar posisi elemen ke 2 dengan elemen yang ada di posisi 4..
Jadi 10 di tukar tempatnya dengan 3.. Nie urutannya habis di tukar..
2 3 15 10 8 22

Langkah 3

Program ngelanjut'in pengecekannya..
Dimulai dari elemen yang ada di posisi ke 3 sekarang..
15 > 10 Pointer pindah ke posisi 4
10 > 8 Pointer pindah ke posisi 5
8 < 22 Pointer tidak berpindah
Tukar elemen di posisi 3 dengan elemen di posisi 5.. Sekarang urutannya jadi..
2 3 8 10 15 22

Langkah 4

Walaupun data sudah terurut secara ascending program bakal tetep ngecek lagi..
Dimulai dari elemen yang ada di posisi 4 sekarang..
10 < 15 Pointer tidak berpindah
10 < 22 Pointer tidak berpindah
Yea, klo udah gini ga ada perpindah'an lagi.. urutannya tetep..
2 3 8 10 15 22

Langkah 5

Dasar yang namanya program.. Walaupun kita ta'u datanya sudah terurut secara logika, tapi program tetep ngecek, cz memang sintaxnya begitu.. Heheee..
Dimulai dari elemen yang ada di posisi 5 sekarang..
15 < 22 Pointer tidak berpindah
FINISH
data akhir setelah diurut ascending adalah :
2 3 8 10 15 22


Ngerti?
Bagus..
Pasti ngerti..
Hehee.. ( Maksa ).. :)

Bubble Sort & Exchange Sort

Tugas Prak. Algo & Struktur Data II !

Sorting Data..
Hmm, menurut dosen algo ak (Pak Agung) sie, cuma ada 4..
Yaitu Bubble Sort, Selection Sort, Insertion Sort and Quick Sort.. Tapi Mr. Yande (asdos prak. Algo & SD) nambah'in lagi satu yaitu Exchange Sort..
Yea, aku sie, ngikut aja.. Namanya juga mahasiswa pemula.. Kan masih belum tau apa..
Hehee.. Ok, via blog ini, aku coba bahas dech, soal sorting data..
Yang pertama adalah :

<1.bubble>
Menurut aku sie.. Bubble Sort itu adalah membandingkan elemen yang ada sekarang (dari belakang) dengan elemen yang berikutnya (yang ada di depannya). Jika elemen sekarang > dari pada elemen berikutnya maka TUKAR.
Biar lebih jelas, aku buat'in contohnya dah..
Gini misalnya kita akan mengurutkan decending ke - 6 data berikut :

22 10 15 3 2 8

Langkah pertama program akan mengecek angka terakhir yaitu, 8 kemudian dibanding'in dengan angka di depannya, brapa? Hayoo..
ia bener 2..
8 > 2 ( Benar ) -> TUKAR

Jadi urutannya sekarang :
22 10 15 3 8 2

Truz program kembali membandingkan nie,, angka 8 dengan angka di depannya.. 3..
8 > 3 ( Benar ) -> TUKAR

Jadi urutannya menjadi :
22 10 15 8 3 2

Teruz Program ngecek lagi nie angka 8 dengan angka yang ada di depannya, 15..
8>15 ( Salah ) -> Maka tidak terjadi pertukaran.

Data tetap :
22 10 15 8 3 2 ( pointernya pindah ke, angka 15 sekarang )

Program membandingkan angka 15 dengan angka yang ada di depannya, yaitu 10..
15 > 10 ( Benar ) -> TUKAR

Jadi urutannya menjadi :
22 15 10 8 3 2

Program mengecek lagi dengan membandingkan 15 dengan 22..
15> 22 ( Salah ) -> Maka tidak akan terjadi pertukaran
Finish

Jadi datanya habiz diurut'in pake' Buble Sort adalah 22 15 10 8 3 2
Gmn? ngerti kagak?
Ga ngerti, ulang baca ! Pokoknya harus ngerti !
Hehee.. Peace ^_^v

<2.exchange>
Exchange Sort sangat mirip dengan Bubble Sort.. Bahkan banyak yang mengatakan Bubble Sort sama dengan Exchange Sort..Tapi yang jelas ada perbedaannya, perbedaannya dalam hal bagaimana membandingkan antar elemen-elemennya.. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu.. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).. Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahnya itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya..