Rabu, 25 Januari 2012

Mengurutkan Data Dengan Metode BubbleShort

GOOGLE
 
Metode gelembung (BubbleSort) atau sering disebut dengan istilah metode penukaran (ExchangeSort) adalah metode yang mendasarkan penukaran dua buah elemen untuk mencapai keadaan urut yang diinginkan. Meskipun metode ini tidak begitu efisien namun cukup mudah untuk dipelajari. Untuk mengurutkan data dengan metode ini ada dua cara yang bisa dilakukan. Yang pertama adalah selalu meletakkan nilai  terbesar pada posisi terakhir (posisi ke N). Kemudian elemen dengan nilai paling besar kedua diletakkan pada posisi ke N-1, dan seterusnya. Cara kedua adalah kebalikan cara pertama. Dalam hal ini nilai terkecil menjadi patokan.
Saya mencoba menyajikan pengurutan data dengan menggunakan cara pertama. Logikanya saya gambarkan dengan tabel berikut :

Iterasi ke A[1] A[2] A[3] A[4] A[5]
Awal 24 23 56 45 12
I=1 23 24 56 45 12
23 24 56 45 12
23 24 45 56 12
23 24 45 12 56
I=2 23 24 45 12 56
23 24 45 12 56
23 24 12 45 56
I=3 23 24 12 45 56
23 12 24 45 56
I=4 12 23 24 45 56
Tabel di atas mengurutkan 5 elemen. Ilustrasi tabel di atas menunjukkan bahwa untuk vector dengan N elemen akan memerlukan iterasi sebagnyak N-1 kali. Disamping itu bisa diperhatikan pula bahwa apabila nomor iterasi kita tambah dengan banyaknya langkah pada iterasi tersebut besarnya tetap, yaitu sama dengan N. Sebagai contoh, untuk iterasi ke-1 terdapat 4 langkah; iterasi ke-2 terdapat 3 langkah, dan seterusnya. Algoritnya sebagai berikut :
Langkah 0 Baca vector yang akan diurutkan
Langkah 1 Kerjakan langkah 2 untuk I = 1 sampai N-1
Langkah 2 Kerjakan langkah 3 untuk J = 1 sampai N-1
Langkah 3 Test:apakah A[j] > A[j+1] ?
Jika ya, tukarkan nilai kedua elemen tersebut.
Langkah 4 Selesai
Sebagai implementasi dari logika di atas saya mencoba dengan visual basi sebagai berikut :
GELEMBUNG
Textbox atas diberi nama txtkunci
Textbox bawah diberi nama txturut
Sedangkan source codenya sebagai berikut:
Private Sub cmdurut_Click()
Dim i, j As Integer
Dim A(20) As Integer
n = Len(Trim(txtkunci.Text))
For k = 1 To n
A(k) = Asc(Mid(txtkunci.Text, k, 1))
Next k
For i = 1 To n – 1
For k = 1 To n – 1
If A(k) > A(k + 1) Then
d = A(k)
A(k) = A(k + 1)
A(k + 1) = d
End If
Next k
Next i
For i = 1 To n
kar = Chr(A(i))
kalimat = kalimat + kar
txturut.Text = kalimat
Next i
End Sub
Jika di run contoh hasilnya sebagai berikut :
GELEMBUNG1