v=2HjspVV0jK4
http://www.youtube.com/watch?v=vxENKlcs2Tw
1. Maximum Sort
Disebut pengurutan maksimum karena didasarkan pada pemilihan elemen
maksimum kemudian mempertukarkan elemen maksimum tersebut dengan
elemen terujung larik (ujung kiri atau kanan). Selanjutnya elemen terujung
tersebut “diisolasi” dab tidak disertakan pd proses selanjutnya. Proses
yang sama diulang untuk elemen larik yang tersisa.
Lanakah-langkah pengurutan data agar terurut MENAIK adalah
- langkah 1 : Tentukan harga maksimum di L[1..N]
Penukaran harga maksimum dg elemen L[N]
- langkah 2 : Tentukan harga maksimum di L[1..N-1]
Penukaran harga maksimum dg elemen L[N-1]
- langkah 3 : Tentukan harga maksimum di L[1..N-2]
Penukaran harga maksimum dg elemen L[N-2]
- ……………
- langkah N-1 : Tentukan harga maksimum di L[1..2]
Penukaran harga maksimum dg elemen L[2]
(elemen yg tersisa adalah L[1], tidak perlu diurut karena hanya satu-
satunya)
1
{mengurutkan elemen Larik L[1..N] sehingga tersusun MENAIK dg
metode pengurutan maksimum}
{Kondisi awal : lemen larik L sudah terdefinis harganya}
{Kondisi Akhir : Elemen larik L terurut MENAIK sedemikian sehingga L[1]
L[2] .. L[N]}
Kamus Lokal
I : integer {pencacah utk jumlah langkah}
J : integer {pencacah utk mencari nilai maksimum}
U : integer {indeks ujung kiri bagian larik yg telah terurut}
Maks : integer {nilai maksimum sementara}
Imaks : integer {indeks yg berisi nilai maksimum sementara}
Temp : integer {variabel bantu untuk pertukaran}
ALGORITMA
U := N u=n;
For I := 1 to N-1 do for (i=1; i<=N-1;i++)
Maks := L[1] maks = L[1];
Imaks := 1 imaks=1;
For j := 2 to U do for (j=2; j<=u; j++)
{
If L[j] > Maks then
Maks := L[j] {
Imaks := j
Endif }
} Endfor
{pertukarkan Maks dengan L[U]}
Temp := L[U]
L[U] := L[Imaks]
L[Imaks} := Temp
2
{Larik L[U..N] terurut, larik [1..U-1] belum terurut}
U := U-1
endfor
2. Insertion Sort
Seperti metode sebelumnya, untuk larik berukuran N jumlah tahapan yang
dilakukan adalah N-1. Pencarian posisi yg tepat dimulai untuk elemen
kedua (ukuran larik >1), jk elemen pertama sudah pada tempatnya. Misal
larik akan diurun MENAIK. Pada setiap tahap ke-K, larik terdiri atas dua
bagian : bagian terurut yaitu L[1..K-1], dan bagian belum terurut L[K..N].
Ambil elemen L[K} dan sisipkan pada posisi yang tepat di dalam L[1..K-1]
sedemikian sehingga [1..K] tetap terurut. Caranya bandingkan L[K]
dengan L[J], J=K-1, K-2, ….., 1. Jika L[K] < L[J], geser L[J} ke L[J+1].
Posisi yang tepat ditemukan jika L[K]>L[J] atau J = 1, sehingga
ditempatkan pada posisi ke-(J+1).
Algoritma pengurutan dengan metode Insertion Sort adalah sbb :
Misal : L[1] dianggap sudah pada tempatnya
- Langkah 2 : L[2] harus dicari tempatnya yang tepat pada L[1..2]
dengan cara menggeser elemen L[1..1] ke kanan bila L[1..1] lebih
besar daripada L[2]. Misalkan posisi yg tepat adalah K. Sisipkan L[2]
pada L[K].
- Langkah 3 : L[3] harus dicari tempatnya yang tepat pada L[1..3]
dengan cara menggeser elemen L[1..2] ke kanan bila [1..2] lebih besar
dari pada L[3]. Misalkan posisi yang tepat adakah K. Sisipkan L[3]
pada L[k].
- Langkah 4 : L[4] harus dicari tempatnya yang tepat pada L[1..4]
dengan cara menggeser elemen L[1..3] ke kanan bila [1..3] lebih besar
dari pada L[4]. Misalkan posisi yang tepat adakah K. Sisipkan L[4]
pada L[k].
- ………..
3
- Langkah N : L[N] harus dicari tempatnya yang tepat pada L[1..N-1]
dengan cara menggeser elemen L[1..N-1] ke kanan bila [1..N-1] lebih
besar dari pada L[4]. Misalkan posisi yang tepat adakah K. Sisipkan
L[N] pada L[k].
Hasil dari langkah N : Larik L[1..N] sudah terurut MENAIK
Kamus Lokal
K : integer {pencacah utk jumlah langkah}
J : integer {pencacah utk penelusuran Larik}
Temp : integer {variabel bantu untuk pertukaran}
ALGORITMA
{elemen L[1] dianggap sudah terurut}
For K := 2 to N do {mulai dari langkah 2 sampai langkah N}
Temp := L[K]
{cari posisi yg tepat utk L[K] di dlm L[1..K-1] sambil menggeser}
J := K-1
While (Temp L[J]) and (J>1) do
L[J+1] := L[J]
J := J-1
Endwhile
If Temp L[J] then
4
L[J+1] := Temp
Else
L[J+1] := L[J]
L[J] := Temp
Endif
endfor
3. Bubble Sort
Idenya adalah gelembung air yang akan ‘mengapung’. Elemen berharga
kecil akan ‘diapungkan’, artinya diangkat ke atas melalui pertukaran.
Proses dilakukan sebanyak N langkah.
- Langkah 1 :
o Mulai dr elemen K = N,N-1,…,2, bandingkan L[K] dengan L[K-
1]. Jk L[k]<L[k-1], pertukarkan L[k] dg L[k-1]. Pd akhir
langkah 1, elemen L[1] berisi harga minimum pertama.
- Langkah 2 :
o Mulai dr elemen K = N,N-1,…,3, bandingkan L[K] dengan L[K-
1]. Jk L[k]<L[k-1], pertukarkan L[k] dg L[k-1]. Pd akhir
langkah 2, elemen L[2] berisi harga minimum kedua dan larik
L[1..2] terurut
o •
- Langkah 3 :
o Mulai dr elemen K = N,N-1,…,4, bandingkan L[K] dengan L[K-
1]. Jk L[k]<L[k-1], pertukarkan L[k] dg L[k-1]. Pd akhir
langkah 3, elemen L[3] berisi harga minimum ketiga dan larik
L[1..3] terurut
o •
o ……
- Langkah N-1 :
5
o Mulai dr elemen K = N, bandingkan L[K] dengan L[K-1]. Jk
L[k]<L[k-1], pertukarkan L[k] dg L[k-1].
TUGAS ANDA :
1. Buatlah program untuk merealisasikan algoritma-algoritma tersebut ke dalam bahasa
Pascal, dalam bentuk menu pilihan. Definisikan Array L berisi elemen-elemen integer.
Contoh tampilan :
6
MENU SORTING
1. ISI ARRAY
2. TAMPIL ARRAY
3. INSERTION SORT
4. MAXIMUM SORT
5. BUBBLE SORT
6. KELUAR
- Jika dipilih menu 1 : jalankan prosedur ISI elemen array, yaitu membaca data
masukan berupa data integer sebagai elemen-elemen array
- Jika dipilih menu 2 : jalankan prosedur Tampil Isi Array, yaitu menampilkan isi
array (terurut jika telah memilih salah satu menu sort)
- Jika dipilih menu 3 : jalankan prosedur Insertion Sort, dan tampilkan data
terurutnya.
- Jika dipilih menu 4 : jalankan prosedur Maximum Sort, dan tampilkan data
terurutnya.
- Jika dipilih menu 5 : jalankan prosedur Bubble Sort, dan tampilkan data
terurutnya
- Jika dipilih menu 6 : keluar program
MENU SORTING
1. ISI ARRAY
2. TAMPIL ARRAY
3. INSERTION SORT
4. MAXIMUM SORT
5. BUBBLE SORT
6. KELUAR
Pilihan : 1
MENU SORTING
1. ISI ARRAY
7
2. TAMPIL ARRAY
3. INSERTION SORT
4. MAXIMUM SORT
5. BUBBLE SORT
6. KELUAR
Pilihan : 2
MENU SORTING
1. ISI ARRAY
2. TAMPIL ARRAY
3. INSERTION SORT
4. MAXIMUM SORT
5. BUBBLE SORT
6. KELUAR
Pilihan : 4
8
Layar besar tersebut harus di-update setiap kali seorang peloncat selesai
melakukan loncatan.
Sebagai masukan program adalah nama dan nilai (score), dan keluaran
program adalah nama dan nilai (score) yang sudah terurut.
Definisikan kamus data untuk program ini. Kreasilah untuk membuat
tampilannya.