Ogi Yak's

Welcome to my personal blog. You will find life experiences here, plus some thoughts.

Kamis, 11 April 2013

Sorting Algorithm

Sorting adalah proses pengurutan suatu barisan secara ascending (a-z) atau descending (z-a). Algorithma adalah cara untuk menyelesaikan suatu masalah. Dalam tulisan ini akan saya bahas 3 algoritma pengurutan yaitu Buble Sort, Insertion sort, dan Selection sort.

Problems:
Diberikan barisan bilangan finite: 91, 76, 33, 12, 3, 77, 78, 81, 9, 0, 11
Urutkan barisan tersebut secara ascending!

Definition:
0. Elemen barisan adalah bilangan bulat/integer.
1. State awal adalah barisan paling awal. Contoh: 91.
2. Jumlah state/kondisi ada n! Contoh: 11! Namun ini tidak efisien.
3. Goal state terdefinisikan sebagai barisan yang terurut secara ascending. Contoh: 0, 3, 9, 11, 12, 33, 76, 77, 78, 81, 91.

Solution:
1. Buble Sort



  • Proses sorting dimulai dari bilangan pertama (n), jika bilangan selanjutnya (n+1) lebih kecil maka swap dilakukan 1 kali. Begitu pula untuk bilangan lainnya, proses dilakukan sampai pernyataan n+1 < n tidak berlaku.
  • Penerapan algoritma ini dalam c++:


2. Insertion Sort
  • Proses sorting dilakukan pertamakali di state 2. Idenya: Akan dilakukan perbandingan, jika bilangan di kiri lebih besar, lakukan swap. Begitu seterusnya sampai bilangan n tidak lebih kecil dari n-1. Untuk worst case, proses membandingkan ini dilakukan sampa n-1 kali. jadi misalnya Head ada di bilangan ke 4, proses membandingkan dilakukan sebanyak 3 kali: bil. ke 4 dengan bil. ke 3, dengan bil. ke 2, ... sampai n=1.
  • Penerapan algoritma ini dalam c++:

3. Selection Sort
  • Metode ini sederhana saja. Dilakukan proses sebanyak n buah data/bilangan sampai diperoleh bilangan paling kecil. Setelah berhasil ditemukan, bilangan terkecil tersebut di swap dengan bilangan pertama (atau bilangan ke n=0, untuk akhir proses, n++). Begitu seterusnya sehingga untuk langkah/proses berikutnya dilakukan sebanyak n-1 (berkurang satu langkah).
  • Penerapan algoritma ini dalam c++:
 
Selesai. 

Notes: Catatan ini adalah catatan belajar. Jadi tidak mutlak (100%) tepat, dan program c++ juga adalah hasil latian saya. Sharing dan semoga bermanfaat. 

Label:

0 Komentar:

Posting Komentar

"Good man doing good things."

Berlangganan Posting Komentar [Atom]

<< Beranda