Anda di halaman 1dari 6

DIKTATKULIAH

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

Anda mungkin juga menyukai