ALGORITMAdanSTRUKTURDATAII
SORTING
Pertemuan12
Waktu
:135menit
TujuanPembelajaran
:Mahasiswamampumenjelaskanteknikpemrograman
menggunakanSorting.
:QuickSort
SubstansiMateri
TabulasiKegiatanPerkuliahan
No
1
Tahap
Kegiatan
KegiatanPengajar
Pendahuluan 1. Membukapertemuan
2. Mengulangmateripertemuan
sebelumnya
Penyajian
1. QuickSort
Materi
2. LatihanSoal
Penutup
1. Menyimpulkanmateripertemuan
2. Memberikantugaskecil
3. Menutuppertemuan
Kegiatan
Mahasiswa
Media&Alat
Waktu
Menyimak
Bertanya
PapanTulis
20Menit
Menyimak
Bertanya
Menjawab
Pertanyaan
Menyimak
PapanTulis
80Menit
Papantulis
35Menit
MATERIKULIAH
QuickSort
Merupakan membandingkan suatu elemen (disebut juga pivot) dengan elemen yang lain
dan menyusunnya sedemikian rupa sehingga elemenelemen lainnya yang lebih kecil
daripadapivottersebutterletakdisebelahkirinyadanelemenelemenlainyanglebihbesar
daripadapivotterletakdisebelahkanannya.Dengandemikiantelahterbentukduasublist,
yangterletakdisebelahkiridankanandaripivot.Lalupadasublistkiridansublistkanan
anggap sebuah list baru dan kerjakan proses yang sama seperti sebelumnya. Demikian
seterusnyasampaitidakterdapatsublistlagi.Sehinggadidalamnyaterjadisebuahproses
rekursif.
V3/20092010 1
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
SORTING
Proses:
1. Bilanganyangdidalamkurungmerupakanpivot
2. Persegipanjangyangdigambarkandengangaristerputus2menunjukansublist
3. ibergerakdarisudutkirikekanansampaimendapatkannilaiyang>=pivot
4. jbergerakdarisudutkanankekirisampaimenemukannilaiyang<pivot
Index =
22
10
15
5. i berhenti pada index ke1 karena langsung mendapatkan nilai yang > dari
pivot(15).
6. j berhenti pada index ke6 karena juga langsung mendapatkan nilai yang < dari
pivot.
7. Karenai<jmakadatayangditunjukolehIditukardengandatayangditunjukolehj
sehinggaurutanmenjadi:
2
10
15
22
10
15
22
Index =
V3/20092010 2
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
SORTING
8. i berhenti pada index ke3 (pivot) karena tidak menemukan bilangan yang > dari
pivot.
9. jberhentipadaindexke5menunjukpadanilaiyang<daripivot.
10. karenai<jmakadatayangditunjukolehI(pivot)ditukardengandatayangditunjuk
olehjsehinggamenjadi:
2
10
15
22
11. Prosesyangsamasepertisebelumnyadilakukanterhadap2buahsublistyangbaru.
Sehinggamenjadi:
2
10
15
22
Contohprosedur:
ProcedureQuickSortdengannilaikirisebagaipembanding(pivot)
ProcedureAsc_quick(L,R:integer);{Prosedurascending}
Var
i,j:integer;
begin
ifL<Rthen
begin
i:=L;j:=R+1;
repeat
repeatinc(i)untildata[i]>=data[l];
repeatdec(j)untildata[j]<=data[l];
ifi<jthenTukarData(data[i],data[j]);
untili>j;
TukarData(data[l],data[j]);
Asc_quick(L,j1);
V3/20092010 3
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
SORTING
End;
End;
Asc_quick(j+1,R);
ProcedureDesc_quick(L,R:integer);{ProsedurDescending}
Var
i,j:integer;
begin
ifL<Rthen
begin
i:=L;j:=R+1;
repeat
repeatinc(i)untildata[i]<=data[l];
repeatdec(j)untildata[j]>=data[l];
ifi<jthenTukarData(data[i],data[j]);
untili>j;
TukarData(data[l],data[j]);
Asc_quick(L,j1);
Asc_quick(j+1,R);
End;
End;
ProcedureQuickSortdengannilaitengahsebagaipembanding(pivot)
Procedureasc_Quick(L,R:integer);{ProsedurAscending}
V3/20092010 4
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
SORTING
Var
Mid,i,j:integer;
Begin
i:=L;
repeat
whiledata[i]<middoinc(i);
whiledata[j]>middodec(j);
ifi<=jthen
begin
Change(data[i],data[j]);
Inc(i);dec(j);
End;
Untili>j;
IfL<jthenAsc_Quick(L,j);
Ifi<RthenAsc_Quick(i,R);
End;
j:=R; mid:=data[(L+R)div2];
Proceduredesc_Quick(L,R:integer);{ProsedurDescending}
Var
Mid,i,j:integer;
Begin
i:=L;
repeat
j:=R; mid:=data[(L+R)div2];
whiledata[i]>middoinc(i);
V3/20092010 5
DIKTATKULIAH
ALGORITMAdanSTRUKTURDATAII
SORTING
whiledata[j]<middodec(j);
ifi<=jthen
begin
Change(data[i],data[j]);
Inc(i);dec(j);
End;
Untili>j;
IfL<jthenAsc_Quick(L,j);
Ifi<RthenAsc_Quick(i,R);
End;
V3/20092010 6