SlideShare a Scribd company logo
1 of 32
Sorting (Pengurutan) 
Implementasi 
Algortima
Pengurutan 
• Merupakan suatu proses untuk mengatur dimana posisi 
suatu data seharusnya. 
• 2 macam pengurutan: 
 pengurutan internal, yaitu pengurutan terhadap 
sekumpulan data yang disimpan dalam media 
internal komputer yang dapat diakses setiap 
elemennya secara langsung. 
 pengurutan eksternal, yaitu pengurutan data yang 
disimpan dalam memori sekunder, biasanya data 
bervolume besar sehingga tidak mampu untuk 
dimuat semuanya dalam memori.
Macam Algoritma 
Pengurutan Internal 
• Counting Sort 
• Maximum Sort 
• Insertion Sort 
• Bubble sort 
• Shaker sort 
• Heap Sort 
• Shell sort 
• Quick Sort 
• Radix sort 
• dll
Kamus dan Persoalan Umum 
Kamus : 
constant Nmax : integer = 100 
type tabInt : array [1..Nmax] of integer 
N : integer { indeks efektif, maksimum tabel yang terdefinisi, N<Nmax} 
{jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} 
T : tabInt {tabel integer} 
N : integer {indeks efektif, 1≤ N ≤ Nmax+1}
Kamus dan Persoalan Umum 
• Persoalan: 
Diberikan sebuah tabel integer TabInt [1..N] 
yang isinya sudah terdefinisi. Tuliskan sebuah 
algoritma yang mengurutkan elemen tabel 
sehingga tersusun membesar : 
TabInt[1] ≤ TabInt[2] ≤ TabInt[3] ...... ≤ TabInt[N]
Counting Sort 
• Merupakan pengurutan yang paling sederhana jika 
diketahui bahwa data yang akan diurut 
mempunyai daerah jelajah (range) tertentu, dan 
merupakan bilangan bulat, misalnya [Min..Max] 
• Proses Umum: 
1. Sediakan array TabCount [Min..Max] yang 
diinisialisasi dengan nol, dan pada akhir proses 
TabCounti berisi banyaknya data pada tabel 
asal yang berharga i. 
2. Tabel dibentuk kembali dengan menuliskan 
kembali harga-harga yang ada.
Counting Sort : Ilustrasi 
2 
2
Counting Sort : Algoritma 
Procedure countSort (Input/Output tabInt : TabelInteger, Input N : integer) 
{mengurut tabel integer [1..N] dengan pencacahan} 
Kamus : 
{ valMin dan valMax adalah batas minimum dan maximum harga yang tersimpan dalam tabInt, harus 
diketahui} 
tabCount : array [valMin .. valMax] of integer [0 .. NMax] 
i : integer {indeks untuk traversal tabel} 
k : integer {jumlah elemen tabInt yang sudah diisi pada proses pembentukan kembali}
Counting Sort : Algoritma 
Algoritma : 
{inisialisasi tabCount} 
i traversal [valMin .. valMax] 
tabCount_i <--0 
{counting} 
i traversal [1..N] 
tabCount_tabInt_i <-- tabCount_tabInt_i + 
1 
{pengisial kembali : tabInt_1 ≤ tabInt_2 ... ≤ 
tabInt_N} 
k <-- 0 
i traversal [valMin .. valMax] 
if tabCount_i ≠ 0 then 
repeat tabCount_i times 
k <-- k+1 
tabInt_k <-- 1
Counting Sort: Catatan 
• TabCount[TabInt[i]] dituliskan untuk menunjukkan 
bahwa indeks TabInt adalah i, dan TabInt[i] 
merupakan indeks dari TabCount.
Bubble Sort 
• Merupakan salah satu bentuk pengurutan yang 
menerapkan pertukaran harga pada prosesnya. 
• Idenya adalah gelembung air yang akan "mengapung": 
elemen berharga kecil akan "diapungkan", artinya 
diangkat ke atas melalui pertukaran. 
• Proses dilakukan sebanyak N tahapan (yang dalam 
sorting disebut sebagai "pass"). Pada setiap Pass, tabel 
terdiri dari dua bagian: bagian yang sudah terurut yaitu 
[1..Pass-1] dan ide dasarnya adalah mengapungkan 
elemen ke “Pass" sampai pada tempatnya.
Bubble Sort : Proses 
1. Untuk setiap dua elemen suksesif TabInt[K] dan 
TabInt[K-1], K [2..N], TabInt[K-1] ≤ TabInt[K], dengan 
demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika 
sifat di atas tidak dipenuhi. Karena dilakukan secara 
berurutan, TabInt[1] berisi harga terkecil. 
2. Untuk setiap dua elemen suksesif TabInt[K] dan 
TabInt[K-1], K [3..N], TabInt[K-1] ≤ TabInt[K], dengan 
demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika 
sifat di atas tidak dipenuhi. Karena dilakukan secara 
berurutan, TabInt[1..2] terurut.
Bubble Sort : Proses 
3. Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K 
[4..N], TabInt[K-1] ≤ TabInt[K], dengan demikian TabInt[K] harus 
ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. Karena 
dilakukan secara berurutan, TabInt[1..3] terurut. 
• . 
N-1 .Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K [N- 
1..N], TabInt[K-1] < TabInt[K], dengan demikian TabInt[K] harus 
ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. 
Karena dilakukan secara berurutan, TabInt[1..N-1] terurut. 
TabInt [1..N] sudah terurut: TabInt[1] ≤ TabInt[2] ≤ TabInt[3] .... ≤ 
TabInt[N]
Bubble Sort : Ilustrasi
B 
u 
b 
b 
l 
e 
S 
o 
r 
t
Bubble Sort : Algoritma 
Procedure BubleSort (Input/Output tabInt : TabelInteger, Input N : integer) 
{mengurut tabel integer [1 .. N] dengan bubble sort} 
Kamus : 
i,k : integer {indeks untuk traversal tabel} 
pass : integer {tahapan pengurutan} 
temp : integer {memorisasi untuk pertukaran harga}
Bubble Sort : Algoritma 
Algoritma: 
pass traversal [1 .. N-1] 
k traversal [N .. pass+1] 
if (tabInt_k < tabInt_k-1) then 
temp <-- tabInt_k 
tabInt_k <-- tabInt_k-1 
tabInt_k-1 <-- temp 
{ tabInt [1 .. pass] terurut : tabInt_1 ≤ tabInt_2 ≤ tabInt_3 ... tabInt_pass} 
{seluruh tabel terurut, karena pass = N tabInt_1 ≤ tabInt_2 ≤ tabInt_3 .. ≤ tabInt_N}
Insertion Sort 
• Idenya adalah mencari tempat yang "tepat" 
untuk setiap elemen tabel, dengan cara 
sequential search, kemudian sisipkan elemen 
tabel yang diproses ke tempat yang 
seharusnya.
Insertion Sort : Proses 
Proses dilakukan sebanyak N tahapan (Pass): 
1. TabInt[1] dianggap sudah tepat tempatnya 
2. TabInt[2] harus dicarikan tempat yang tepat pada TabInt[1..2], yaitu 
i. Sisipkan TabInt[2] pada TabInt[i]. TabInt [1..2] terurut membesar. 
3. TabInt[3] harus dicarikan tempat yang tepat pada TabInt[1..3], yaitu 
i. Sisipkan TabInt[3] pada TabInt[i]. TabInt [1..3] terurut membesar. 
. 
N-1 TabInt [N-1] dicarikan tempat yang tepat pada TabInt [1..N-1], yaitu : 
• Sisipkan TabInt [N-1] pada TabInt [i]. TabInt [1..N-1] terurut 
membesar. 
• N TabInt [1..N] sudah terurut: TabInt[1] ≤ TabInt[2] ≤ TabInt[3] ... ≤ 
TabInt[N]
Insertion Sort : Proses 
• Pada setiap Pass, tabel terdiri dari dua bagian: yang sudah terurut 
yaitu [1..Pass – 1] dan sisanya [Pass..Nmax] yang belum terurut. 
• Ambil elemen TabInt[Pass], sisipkan ke dalam TabInt[1..Pass-1] 
dengan tetap menjaga keterurutan. 
• Untuk menyisipkan TabInt[Pass] ke TabInt[i], harus terjadi 
"pergeseran" elemen tabel TabInt [i..Pass]. 
• Pergeseran ini dapat dilakukan sekaligus dengan pencarian i. 
• Pencarian dapat dihentikan segera dengan memanfaatkan sifat 
keterurutan TabInt[1..Pass]. 
• Metoda pengurutan ini cukup efisien (≅ N) terutama untuk N yang 
"kecil". 
• Terdapat 2 varian: tanpa sentinel dan dengan sentinel
Insertion Sort : Ilustrasi
Insertion Sort : Algoritma 
Procedure InsertionSORT(Input/Output tabInt: TabelInteger, Input N : integer) 
{mengurut tabel integer [1..N] dengan insertion } 
Kamus: 
i: integer {indeks untuk traversal tabel} 
pass : integer {tahapan pengurutan} 
temp : integer
Insertion Sort : Algoritma 
Algoritma : 
{tabInt_1 adalah terurut} 
pass traversal [2..N] 
temp <-- tabInt_pass {simpan harga tabInt_pass supaya tidak tertimpa karena 
pergeseran} 
{sisipkan elemen ke pass dalam tabInt[1..pass-1] sambil menggeser} 
i<--pass-1 
{cari i, temp ≤ tabInt_i and i>1} 
while (temp<tabInt_i) and (i>1) do 
tabInt_i+1 <-- tabInt_i {geser} 
i <-- i-1 {berikutnya} 
{temp ≤ tabInt_i (tempat yang tepat) or i===1 (sisipkan sebagai element 
pertama)} 
depend on tabInt, i,temp 
temp ≤ tabInt_i : tabInt_i+1 <-- temp {menemukan tempat 
yang tepat} 
temp < tabInt_i : tabInt_i <-- temp {sebagai elemen pertama} 
{tabInt[1..pass] terurut membesar: tabInt≤ tabInt_1 ≤ tabInt_2 ≤ 
tabInt_pass} 
{seluruh tabel terurut, karena pass = N : tabInt_1 ≤ tabInt_2 ≤ tabInt_3 ... ≤ tabInt_N}
Insertion Sort : Algoritma 
dengan Sentinel 
Procedure InsertionSortWithSentinel(Input/Output tabInt: 
TabelInteger, Input N: integer) 
Kamus: 
i : integer 
pass : integer {indeks untuk traversal tabel} 
temp : integer {tahapan pengurutan} 
temp : integer {menyimpan harga tab_pass supaya tidak 
tertimpa karena pergeseran}
Insertion Sort: Algoritma 
dengan Sentinel 
Algoritma: 
{tabInt_1 adalah terurut} 
pass traversal [2..n] 
{simpan dulu harga tabInt(pass) supaya tertimpa karena pergeseran} 
temp<-- tabInt_pass 
tabInt_0 <-- temp 
{sisipkan elemen ke pass dalam tabInt[1..pass-1] sambil 
menggeser} 
i<--pass-1 
{cari i, tabInt_I ≤ temp and i>1} 
while (temp < tabInt_i) do 
tabInt_i+1 <-- tabInt_i {geser} 
i<--i-1 {berikutnya} 
{temp≥ tabInt_i} 
tabInt_i+1 <-- temp {sisipkan} 
{tabInt[1..pass] terurut: 
tabInt≤tabInt_2≤tabInt_3 ..... ≤ tabInt_pass} 
{seluruh tabel terurut ,karena pass = N : tabInt_1≤tabInt_2≤tabInt3 
..... ≤tabInt_N}
Selection Sort 
• Idenya adalah menghasilkan nilai maksimum tabel (untuk efisiensi, 
hanya indeks dimana harga maksimum ditemukan yang dicatat), 
kemudian menukarnya dengan elemen terujung. 
• Elemen terujung ini "diisolasi" dan tidak diikut sertakan pada proses 
berikutnya. 
• Proses diulang untuk sisa tabel. 
• Karena elemen terujung berharga maksimum adalah indeks 
pertama tabel, maka tabel terurut mengecil: 
TabInt[1] ≥ TabInt[2] ≥ TabInt[3] ... ≥ TabInt[N]
Selection Sort : Proses 
Proses dilakukan sebanyak N tahapan (Pass) : 
1. Tentukan IMAX [1..N], TabInt[IMAX] adalah maksimum dari TabInt[1..N] 
Tukar TabInt[IMAX] dengan TabInt[1] 
2. Tentukan IMAX [2..N], TabInt[IMAX] adalah maksimum dari TabInt[2..N] 
Tukar TabInt[IMAX] dengan TabInt[2] 
3. Tentukan IMAX [3..N], TabInt[IMAX] adalah maksimum dari TabInt[3..N] 
Tukar TabInt[IMAX] dengan TabInt[3] 
. 
. 
N-1 Tentukan IMAX [N-1..N], TabInt[IMAX] adalah maksimum dari TabInt[N- 
1..N] 
Tukar TabInt[IMAX] dengan TabInt[N-1] 
TabInt [1..N] sudah terurut : TabInt[1] ≥ TabInt[2] ≥ TabInt[3] ... ≥ 
TabInt[N]
Selection Sort : Ilustrasi
Selection Sort : Algoritma 
Program MaxSort(Input/Output tabInt: TabelInteger, input N: integer) 
{mengurut tabel integer [1..N] terurut mengecil dengan maksimum suksesif} 
Kamus: 
i: integer {indeks untuk traversal tabel} 
pass : integer {tahapan pengurutan} 
temp : integer {memorisasi harga untuk penukaran} 
iMax : integer {indeks, dimana tabInt [1..pass] berharga maksimum}
Selection Sort : Algoritma 
Algoritma: 
pass traversal [1..N-1] 
{tentukan maximum [pass..N]} 
iMax <-- pass 
i traversal [pass+1 .. N] 
if (tabInt_iMax < tabInt_i) then 
iMax <-- i 
{tabInt_max adalah maximum dengan tabInt_pass} 
temp <-- tabInt_iMax 
tabInt_iMax <-- tabInt_pass 
tabInt_pass <-- temp 
{ tabInt[1..pass] terurut: tabInt_1≥tabInt_2≥tabInt_3 .. ≥ tabInt_pass} 
{seluruh tabel terurut, tabInt_1≥tabInt_2≥tabInt_3 ...... ≥ tabInt+N}
Referensi 
• Liem, Inggriani. 2007. Diktat Kuliah Dasar 
Pemrograman (Bagian Pemrograman 
Prosedural). Bandung: Institut Teknologi 
Bandung
Thank you! 
See you…

More Related Content

Similar to OPTIMIZED ALGORTIMA PENGURUTAN

Materi_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptMateri_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptangelyaningsih
 
Materi_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptMateri_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptangelyaningsih
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data SortingBintangWijaya5
 
Kelompok algoritma ririn and friends STT wastukancana
Kelompok algoritma ririn and friends STT wastukancanaKelompok algoritma ririn and friends STT wastukancana
Kelompok algoritma ririn and friends STT wastukancanaRirin Indah
 
Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Edho Pratama
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)Fahuda E
 
Bab 2 sorting array
Bab 2 sorting arrayBab 2 sorting array
Bab 2 sorting arrayFahuda E
 

Similar to OPTIMIZED ALGORTIMA PENGURUTAN (9)

Materi_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptMateri_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).ppt
 
Materi_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).pptMateri_SORTING(PENGURUTAN).ppt
Materi_SORTING(PENGURUTAN).ppt
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data Sorting
 
Kelompok algoritma ririn and friends STT wastukancana
Kelompok algoritma ririn and friends STT wastukancanaKelompok algoritma ririn and friends STT wastukancana
Kelompok algoritma ririn and friends STT wastukancana
 
Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)
 
Algoritma sorting
Algoritma sortingAlgoritma sorting
Algoritma sorting
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)
 
Bab 2 sorting array
Bab 2 sorting arrayBab 2 sorting array
Bab 2 sorting array
 
Topik 11 Array
Topik 11 ArrayTopik 11 Array
Topik 11 Array
 

Recently uploaded

Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxsyafnasir
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxSyaimarChandra1
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxsudianaade137
 
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).ppt
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).pptModul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).ppt
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).pptYanseBetnaArte
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdfShintaNovianti1
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau tripletMelianaJayasaputra
 
alat-alat liturgi dalam Gereja Katolik.pptx
alat-alat liturgi dalam Gereja Katolik.pptxalat-alat liturgi dalam Gereja Katolik.pptx
alat-alat liturgi dalam Gereja Katolik.pptxRioNahak1
 
PEMIKIRAN POLITIK Jean Jacques Rousseau.pdf
PEMIKIRAN POLITIK Jean Jacques  Rousseau.pdfPEMIKIRAN POLITIK Jean Jacques  Rousseau.pdf
PEMIKIRAN POLITIK Jean Jacques Rousseau.pdfMMeizaFachri
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxmtsmampunbarub4
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxBambang440423
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaNadia Putri Ayu
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxErikaPuspita10
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxherisriwahyuni
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiIntanHanifah4
 
Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)3HerisaSintia
 
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024budimoko2
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxRezaWahyuni6
 

Recently uploaded (20)

Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptxTopik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
Topik 1 - Pengenalan Penghayatan Etika dan Peradaban Acuan Malaysia.pptx
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
 
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptxPanduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
Panduan Substansi_ Pengelolaan Kinerja Kepala Sekolah Tahap Pelaksanaan.pptx
 
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).ppt
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).pptModul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).ppt
Modul 9 Penjas kelompok 7 (evaluasi pembelajaran penjas).ppt
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
1.2.a.6. Demonstrasi Konstektual - Modul 1.2 (Shinta Novianti - CGP A10).pdf
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet
 
alat-alat liturgi dalam Gereja Katolik.pptx
alat-alat liturgi dalam Gereja Katolik.pptxalat-alat liturgi dalam Gereja Katolik.pptx
alat-alat liturgi dalam Gereja Katolik.pptx
 
PEMIKIRAN POLITIK Jean Jacques Rousseau.pdf
PEMIKIRAN POLITIK Jean Jacques  Rousseau.pdfPEMIKIRAN POLITIK Jean Jacques  Rousseau.pdf
PEMIKIRAN POLITIK Jean Jacques Rousseau.pdf
 
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptxadap penggunaan media sosial dalam kehidupan sehari-hari.pptx
adap penggunaan media sosial dalam kehidupan sehari-hari.pptx
 
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptxJurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
Jurnal Dwi mingguan modul 1.2-gurupenggerak.pptx
 
Karakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional DuniaKarakteristik Negara Brazil, Geografi Regional Dunia
Karakteristik Negara Brazil, Geografi Regional Dunia
 
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptxIPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
IPA Kelas 9 BAB 10 - www.ilmuguru.org.pptx
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docxModul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
Modul Ajar Bahasa Indonesia - Menulis Puisi Spontanitas - Fase D.docx
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
Edukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajiiEdukasi Haji 2023 pembinaan jemaah hajii
Edukasi Haji 2023 pembinaan jemaah hajii
 
Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)Karakteristik Negara Mesir (Geografi Regional Dunia)
Karakteristik Negara Mesir (Geografi Regional Dunia)
 
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024
Petunjuk Teknis Aplikasi Pelaksanaan OSNK 2024
 
Materi Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptxMateri Pertemuan 6 Materi Pertemuan 6.pptx
Materi Pertemuan 6 Materi Pertemuan 6.pptx
 

OPTIMIZED ALGORTIMA PENGURUTAN

  • 2. Pengurutan • Merupakan suatu proses untuk mengatur dimana posisi suatu data seharusnya. • 2 macam pengurutan:  pengurutan internal, yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer yang dapat diakses setiap elemennya secara langsung.  pengurutan eksternal, yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data bervolume besar sehingga tidak mampu untuk dimuat semuanya dalam memori.
  • 3. Macam Algoritma Pengurutan Internal • Counting Sort • Maximum Sort • Insertion Sort • Bubble sort • Shaker sort • Heap Sort • Shell sort • Quick Sort • Radix sort • dll
  • 4. Kamus dan Persoalan Umum Kamus : constant Nmax : integer = 100 type tabInt : array [1..Nmax] of integer N : integer { indeks efektif, maksimum tabel yang terdefinisi, N<Nmax} {jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut} T : tabInt {tabel integer} N : integer {indeks efektif, 1≤ N ≤ Nmax+1}
  • 5. Kamus dan Persoalan Umum • Persoalan: Diberikan sebuah tabel integer TabInt [1..N] yang isinya sudah terdefinisi. Tuliskan sebuah algoritma yang mengurutkan elemen tabel sehingga tersusun membesar : TabInt[1] ≤ TabInt[2] ≤ TabInt[3] ...... ≤ TabInt[N]
  • 6. Counting Sort • Merupakan pengurutan yang paling sederhana jika diketahui bahwa data yang akan diurut mempunyai daerah jelajah (range) tertentu, dan merupakan bilangan bulat, misalnya [Min..Max] • Proses Umum: 1. Sediakan array TabCount [Min..Max] yang diinisialisasi dengan nol, dan pada akhir proses TabCounti berisi banyaknya data pada tabel asal yang berharga i. 2. Tabel dibentuk kembali dengan menuliskan kembali harga-harga yang ada.
  • 7. Counting Sort : Ilustrasi 2 2
  • 8. Counting Sort : Algoritma Procedure countSort (Input/Output tabInt : TabelInteger, Input N : integer) {mengurut tabel integer [1..N] dengan pencacahan} Kamus : { valMin dan valMax adalah batas minimum dan maximum harga yang tersimpan dalam tabInt, harus diketahui} tabCount : array [valMin .. valMax] of integer [0 .. NMax] i : integer {indeks untuk traversal tabel} k : integer {jumlah elemen tabInt yang sudah diisi pada proses pembentukan kembali}
  • 9. Counting Sort : Algoritma Algoritma : {inisialisasi tabCount} i traversal [valMin .. valMax] tabCount_i <--0 {counting} i traversal [1..N] tabCount_tabInt_i <-- tabCount_tabInt_i + 1 {pengisial kembali : tabInt_1 ≤ tabInt_2 ... ≤ tabInt_N} k <-- 0 i traversal [valMin .. valMax] if tabCount_i ≠ 0 then repeat tabCount_i times k <-- k+1 tabInt_k <-- 1
  • 10. Counting Sort: Catatan • TabCount[TabInt[i]] dituliskan untuk menunjukkan bahwa indeks TabInt adalah i, dan TabInt[i] merupakan indeks dari TabCount.
  • 11. Bubble Sort • Merupakan salah satu bentuk pengurutan yang menerapkan pertukaran harga pada prosesnya. • Idenya adalah gelembung air yang akan "mengapung": elemen berharga kecil akan "diapungkan", artinya diangkat ke atas melalui pertukaran. • Proses dilakukan sebanyak N tahapan (yang dalam sorting disebut sebagai "pass"). Pada setiap Pass, tabel terdiri dari dua bagian: bagian yang sudah terurut yaitu [1..Pass-1] dan ide dasarnya adalah mengapungkan elemen ke “Pass" sampai pada tempatnya.
  • 12. Bubble Sort : Proses 1. Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K [2..N], TabInt[K-1] ≤ TabInt[K], dengan demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. Karena dilakukan secara berurutan, TabInt[1] berisi harga terkecil. 2. Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K [3..N], TabInt[K-1] ≤ TabInt[K], dengan demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. Karena dilakukan secara berurutan, TabInt[1..2] terurut.
  • 13. Bubble Sort : Proses 3. Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K [4..N], TabInt[K-1] ≤ TabInt[K], dengan demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. Karena dilakukan secara berurutan, TabInt[1..3] terurut. • . N-1 .Untuk setiap dua elemen suksesif TabInt[K] dan TabInt[K-1], K [N- 1..N], TabInt[K-1] < TabInt[K], dengan demikian TabInt[K] harus ditukar dengan TabInt[K-1] jika sifat di atas tidak dipenuhi. Karena dilakukan secara berurutan, TabInt[1..N-1] terurut. TabInt [1..N] sudah terurut: TabInt[1] ≤ TabInt[2] ≤ TabInt[3] .... ≤ TabInt[N]
  • 14. Bubble Sort : Ilustrasi
  • 15. B u b b l e S o r t
  • 16. Bubble Sort : Algoritma Procedure BubleSort (Input/Output tabInt : TabelInteger, Input N : integer) {mengurut tabel integer [1 .. N] dengan bubble sort} Kamus : i,k : integer {indeks untuk traversal tabel} pass : integer {tahapan pengurutan} temp : integer {memorisasi untuk pertukaran harga}
  • 17. Bubble Sort : Algoritma Algoritma: pass traversal [1 .. N-1] k traversal [N .. pass+1] if (tabInt_k < tabInt_k-1) then temp <-- tabInt_k tabInt_k <-- tabInt_k-1 tabInt_k-1 <-- temp { tabInt [1 .. pass] terurut : tabInt_1 ≤ tabInt_2 ≤ tabInt_3 ... tabInt_pass} {seluruh tabel terurut, karena pass = N tabInt_1 ≤ tabInt_2 ≤ tabInt_3 .. ≤ tabInt_N}
  • 18. Insertion Sort • Idenya adalah mencari tempat yang "tepat" untuk setiap elemen tabel, dengan cara sequential search, kemudian sisipkan elemen tabel yang diproses ke tempat yang seharusnya.
  • 19. Insertion Sort : Proses Proses dilakukan sebanyak N tahapan (Pass): 1. TabInt[1] dianggap sudah tepat tempatnya 2. TabInt[2] harus dicarikan tempat yang tepat pada TabInt[1..2], yaitu i. Sisipkan TabInt[2] pada TabInt[i]. TabInt [1..2] terurut membesar. 3. TabInt[3] harus dicarikan tempat yang tepat pada TabInt[1..3], yaitu i. Sisipkan TabInt[3] pada TabInt[i]. TabInt [1..3] terurut membesar. . N-1 TabInt [N-1] dicarikan tempat yang tepat pada TabInt [1..N-1], yaitu : • Sisipkan TabInt [N-1] pada TabInt [i]. TabInt [1..N-1] terurut membesar. • N TabInt [1..N] sudah terurut: TabInt[1] ≤ TabInt[2] ≤ TabInt[3] ... ≤ TabInt[N]
  • 20. Insertion Sort : Proses • Pada setiap Pass, tabel terdiri dari dua bagian: yang sudah terurut yaitu [1..Pass – 1] dan sisanya [Pass..Nmax] yang belum terurut. • Ambil elemen TabInt[Pass], sisipkan ke dalam TabInt[1..Pass-1] dengan tetap menjaga keterurutan. • Untuk menyisipkan TabInt[Pass] ke TabInt[i], harus terjadi "pergeseran" elemen tabel TabInt [i..Pass]. • Pergeseran ini dapat dilakukan sekaligus dengan pencarian i. • Pencarian dapat dihentikan segera dengan memanfaatkan sifat keterurutan TabInt[1..Pass]. • Metoda pengurutan ini cukup efisien (≅ N) terutama untuk N yang "kecil". • Terdapat 2 varian: tanpa sentinel dan dengan sentinel
  • 21. Insertion Sort : Ilustrasi
  • 22. Insertion Sort : Algoritma Procedure InsertionSORT(Input/Output tabInt: TabelInteger, Input N : integer) {mengurut tabel integer [1..N] dengan insertion } Kamus: i: integer {indeks untuk traversal tabel} pass : integer {tahapan pengurutan} temp : integer
  • 23. Insertion Sort : Algoritma Algoritma : {tabInt_1 adalah terurut} pass traversal [2..N] temp <-- tabInt_pass {simpan harga tabInt_pass supaya tidak tertimpa karena pergeseran} {sisipkan elemen ke pass dalam tabInt[1..pass-1] sambil menggeser} i<--pass-1 {cari i, temp ≤ tabInt_i and i>1} while (temp<tabInt_i) and (i>1) do tabInt_i+1 <-- tabInt_i {geser} i <-- i-1 {berikutnya} {temp ≤ tabInt_i (tempat yang tepat) or i===1 (sisipkan sebagai element pertama)} depend on tabInt, i,temp temp ≤ tabInt_i : tabInt_i+1 <-- temp {menemukan tempat yang tepat} temp < tabInt_i : tabInt_i <-- temp {sebagai elemen pertama} {tabInt[1..pass] terurut membesar: tabInt≤ tabInt_1 ≤ tabInt_2 ≤ tabInt_pass} {seluruh tabel terurut, karena pass = N : tabInt_1 ≤ tabInt_2 ≤ tabInt_3 ... ≤ tabInt_N}
  • 24. Insertion Sort : Algoritma dengan Sentinel Procedure InsertionSortWithSentinel(Input/Output tabInt: TabelInteger, Input N: integer) Kamus: i : integer pass : integer {indeks untuk traversal tabel} temp : integer {tahapan pengurutan} temp : integer {menyimpan harga tab_pass supaya tidak tertimpa karena pergeseran}
  • 25. Insertion Sort: Algoritma dengan Sentinel Algoritma: {tabInt_1 adalah terurut} pass traversal [2..n] {simpan dulu harga tabInt(pass) supaya tertimpa karena pergeseran} temp<-- tabInt_pass tabInt_0 <-- temp {sisipkan elemen ke pass dalam tabInt[1..pass-1] sambil menggeser} i<--pass-1 {cari i, tabInt_I ≤ temp and i>1} while (temp < tabInt_i) do tabInt_i+1 <-- tabInt_i {geser} i<--i-1 {berikutnya} {temp≥ tabInt_i} tabInt_i+1 <-- temp {sisipkan} {tabInt[1..pass] terurut: tabInt≤tabInt_2≤tabInt_3 ..... ≤ tabInt_pass} {seluruh tabel terurut ,karena pass = N : tabInt_1≤tabInt_2≤tabInt3 ..... ≤tabInt_N}
  • 26. Selection Sort • Idenya adalah menghasilkan nilai maksimum tabel (untuk efisiensi, hanya indeks dimana harga maksimum ditemukan yang dicatat), kemudian menukarnya dengan elemen terujung. • Elemen terujung ini "diisolasi" dan tidak diikut sertakan pada proses berikutnya. • Proses diulang untuk sisa tabel. • Karena elemen terujung berharga maksimum adalah indeks pertama tabel, maka tabel terurut mengecil: TabInt[1] ≥ TabInt[2] ≥ TabInt[3] ... ≥ TabInt[N]
  • 27. Selection Sort : Proses Proses dilakukan sebanyak N tahapan (Pass) : 1. Tentukan IMAX [1..N], TabInt[IMAX] adalah maksimum dari TabInt[1..N] Tukar TabInt[IMAX] dengan TabInt[1] 2. Tentukan IMAX [2..N], TabInt[IMAX] adalah maksimum dari TabInt[2..N] Tukar TabInt[IMAX] dengan TabInt[2] 3. Tentukan IMAX [3..N], TabInt[IMAX] adalah maksimum dari TabInt[3..N] Tukar TabInt[IMAX] dengan TabInt[3] . . N-1 Tentukan IMAX [N-1..N], TabInt[IMAX] adalah maksimum dari TabInt[N- 1..N] Tukar TabInt[IMAX] dengan TabInt[N-1] TabInt [1..N] sudah terurut : TabInt[1] ≥ TabInt[2] ≥ TabInt[3] ... ≥ TabInt[N]
  • 28. Selection Sort : Ilustrasi
  • 29. Selection Sort : Algoritma Program MaxSort(Input/Output tabInt: TabelInteger, input N: integer) {mengurut tabel integer [1..N] terurut mengecil dengan maksimum suksesif} Kamus: i: integer {indeks untuk traversal tabel} pass : integer {tahapan pengurutan} temp : integer {memorisasi harga untuk penukaran} iMax : integer {indeks, dimana tabInt [1..pass] berharga maksimum}
  • 30. Selection Sort : Algoritma Algoritma: pass traversal [1..N-1] {tentukan maximum [pass..N]} iMax <-- pass i traversal [pass+1 .. N] if (tabInt_iMax < tabInt_i) then iMax <-- i {tabInt_max adalah maximum dengan tabInt_pass} temp <-- tabInt_iMax tabInt_iMax <-- tabInt_pass tabInt_pass <-- temp { tabInt[1..pass] terurut: tabInt_1≥tabInt_2≥tabInt_3 .. ≥ tabInt_pass} {seluruh tabel terurut, tabInt_1≥tabInt_2≥tabInt_3 ...... ≥ tabInt+N}
  • 31. Referensi • Liem, Inggriani. 2007. Diktat Kuliah Dasar Pemrograman (Bagian Pemrograman Prosedural). Bandung: Institut Teknologi Bandung
  • 32. Thank you! See you…