SlideShare a Scribd company logo
1 of 31
wilis k - IFUPN"V"Yk
PENGURUTAN
(SORTING)
Algoritma dan Pemrograman Lanjut
Wilis Kaswidjanti
Informatika UPN “Veteran” Yk
wilis k - IFUPN"V"Yk
SORTING
• Sorting adalah suatu proses pengurutan
data yang sebelumnya disusun secara
acak atau tidak teratur menjadi urut
dan teratur menurut suatu aturan
tertentu.
• Biasanya pengurutan terbagi menjadi
dua yaitu :
– ascending (pengurutan dari karakter/angka kecil ke
karakter/angka besar).
– descending (pengurutan dari karakter/angka besar
ke karakter/angka kecil).
wilis k - IFUPN"V"Yk
Metode Sorting
Metode pengurutan langsung :
• Metode Penukaran (Exchange selection) /
Gelembung (Bubble Sort)
• Metode Seleksi (Straight Selection Sort)
• Metode Metode Penyisipan Langsung (Straight
Insertion Sort)
Metode pengurutan tidak langsung :
• Shell Sort
• Quick Sort
• Merge Sort
wilis k - IFUPN"V"Yk
Exchange selection /
Bubble Sort
• metode pertama yang paling banyak
dipelajari pemrogram.
• Sederhana 
– bubble sort tidak efisien dan menyita banyak
waktu prosessor lebih banyak daripada teknik
sorting yang lain.
– tidak lebih dari 30 atau kurang dari 30
elemen, penggunaan bubble sort masih
sangat baik
wilis k - IFUPN"V"Yk
Exchange selection / Bubble Sort
• Metode gelembung / penukaran adalah metode
yang mendasarkan penukaran 2 buah elemen
untuk mencapai keadaan urut yang diinginkan
• Langkah-langkah :
1 : Baca array elemen yang diurutkan (N)
2 : Kerjakan langkah 3 untuk I=1 s/d N-1
3 : Kerjakan langkah 4 untuk J=1 s/d N-1
4 : Cek apakah A[J]>A[J+1}
5 : Selesai
wilis k - IFUPN"V"Yk
Ilustrasi Bubble Sort
44 33 33 33
33 44 44 44
55 55 55 22
22 22 22 55
11 11 11 11
33 33 33
44 44 22
22 22 44
11 11 11
55 55 55
wilis k - IFUPN"V"Yk
33 22
22 33
11 11
44 44
55 55
22 11
11 22
33 33
44 44
55 55
wilis k - IFUPN"V"Yk
Program berikut memakai bubble sort untuk mengurutkan data array :
/* Bubble Sort */
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
void bubble_sort(int array[], int size)
{int temp, i, j;
for (i=0; i<size-1; i++)
for (j=0; j<size-1-i; j++)
if (array[j] > array[j+1])
{
temp= array[j];
array[j]= array[j+1];
array[j+1]= temp;
}
}
wilis k - IFUPN"V"Yk
Straight Selection Sort
• Selection sort dimulai dengan menyelesaikan
elemen array (misalnya elemen pertama).
• Kemudian sorting mencari keseluruhan array
hingga menemukan nilai yang terkecil. Sorting
menempatkan nilai terkecil pada elemen
tersebut, memilih elemen kedua dan mencari
elemen terkecil kedua.
wilis k - IFUPN"V"Yk
Langkah-langkah Straight
Selection Sort
1 : Baca array elemen yang diurutkan (n)
2 : Kerjakan langkah-langkah 3 sampai langkah 5
untuk i=1 s/d n-1
3 : Tentukan lokasi awal data terkecil Mindeks =1;
kerjakan langkah 4 untuk j=i+1 s/d n
4 : Cari data terkecil dan catat lokasinya. Test
apakah AMindeks > Aj?
Jika ya, catat Mindeks = j
5 : Tukar nilai Amindeks dengan Aj
6 : Selesai
wilis k - IFUPN"V"Yk
Ilustrasi Straight Selection Sort
wilis k - IFUPN"V"Yk
wilis k - IFUPN"V"Yk
void selectionSort(int arr[], int n)
{
int i, j, min_idx;
// One by one move boundary of
// unsorted subarray
for (i = 0; i < n-1; i++)
{
// Find the minimum element in
// unsorted array
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element
// with the first element
swap(&arr[min_idx], &arr[i]);
}
}
wilis k - IFUPN"V"Yk
Straight Insertion Sort
Dapat dibagi menjadi 2 bagian
– Bagian sebelah kiri data sudah terurut (tujuan)
– Bagian sebelah kanan data belum terurut (sumber)
Langkah-langkah :
1 : Baca array elemen yang akan diurutkan (n)
2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1
3 : Tentukan elemen yang akan disisipkan (Temp = A [i] ;
j = i-1;)
4 : Kerjakan langkah 5 selama temp <A [j] dan j >= 0;
5 : A [j+1]= A[j] ; j =j-1;
6 : Tempatkan elemen A [j+1] = Temp;
7 : Selesai
wilis k - IFUPN"V"Yk
Algoritma Straight Insertion Sort
Deklarasi
I,J,K,N : Integer
Temp : real
A : array [1..20] of real
Deskripsi
Input(N) {maksimal N=20}
K traversal [1..N]
Input (Af) {masukkan data sebanyak N}
I traversal [2..N]
Temp  A1
J  I-1
While (temp <Aj) and (J>=1) do
Aj+1  Aj
J J-1
Endwhile
Aj+1  Temp
Ilustrasi Insertion Sort
A [0] A [1] A [2] A [3] A [4] A [5]
4 7 9 5 8 6
4 7 9 5 8 6
4 7 9 5 8 6
4 7 9 5 8 6
4 7 9 5 8 6
4 7 5 9 8 6
4 5 7 9 8 6
4 5 7 9 8 6
4 5 7 8 9 6
4 5 7 8 9 6
4 5 7 8 6 9
4 5 7 6 8 9
4 5 6 7 8 9
wilis k - IFUPN"V"Yk
Shell Sort
Metoda ini memanfaatkan penukaran
sepasang elemen untuk mencapai
keadaan urut. Dua buah elemen
ditukarkan dengan jarak tertentu.
Rumus : ■ Jarak pertama = N / 2
■ Jarak berikutnya = jarak sebelumnya / 2
wilis k - IFUPN"V"Yk
Contoh :
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Sehingga :
■ Jarak pertama = 9 / 2 = 4
■ Jarak kedua = 4 / 2 = 2
■ Jarak ketiga = 2 / 2 = 1
24 46 11 26 57 38 27 20 17
Ilustrasi Shell Sort
Jarak A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Awal
Jarak
= 9 div 2
= 4
24 46 11 26 57 38 27 20 17
24 46 11 26 57 38 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 20 57 46 27 26 17
24 38 11 20 17 46 27 26 57
17 38 11 20 24 46 27 26 57
Jarak
= 4 div 2
= 2
17 38 11 20 24 46 27 26 57
11 38 17 20 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 26 27 46 57
11 20 17 26 24 38 27 46 57
11 20 17 26 24 38 27 46 57
11 20 17 26 24 38 27 46 57
Jarak
= 2 div 2
= 1
11 20 17 38 24 26 27 46 57
11 20 17 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 24 38 26 27 46 57
11 17 20 24 38 26 27 46 57
11 17 20 24 26 38 27 46 57
11 17 20 24 26 38 27 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
Hasil 11 17 20 24 26 27 38 46 57
wilis k - IFUPN"V"Yk
Quick Sort
• Sering disebut dengan “partion exchange” sort.
• Langkah-langkah :
– Misal vektor A yang memiliki N elemen.
– Dipilih sembarang elemen, biasanya elemen pertama,
misal sebut saja X.
– Kemudian, semua elemen tersebut dengan menempatkan
X pada posisi J sedemikian rupa sehingga :
• elemen 1 s/d J-1 memiliki nilai lebih kecil dari X dan
• elemen ke J+1 s/d N memiliki nilai lebih besar dari X.
– Dengan demikian, terdapat dua buah subvektor.
• Contoh :
1 N
24 46 11 26 57 38 27 20 17
Ilustrasi Quick Sort
1 N
Subvektor Kiri X Subvektor Kanan
1 J-1 J+1 N
24 46 11 26 57 38 27 20 17
11 20 17 24
24
24
24 57
26
38
57
46
26
57
46
46
27
20
17
20
17
11
11
11 20 17 26 38 27
38 27
46 26 57 38 27
Merge Sort
Ide metode Merge Sort :
1. Pembagian array data menjadi dua bagian
(bagian kiri dan bagian kanan)
Ulangi langkah 1 secara rekursi terhadap
kedua bagian tersebut, sampai tiap subarray
hanya terdiri dari satu elemen.
2. Gabungkan masing-masing bagian itu
sekaligus mengurutkannya, sesuai pohon yang
terbentuk saat membagi array, sampai
membentuk array pertama saat sebelum
dibagi.
Ulangi langkah 2 secara rekursi pula.
wilis k - IFUPN"V"Yk
Ilustrasi Merge Sort
1 2 3 4 5 6 7
25 6 12 7 28 15 20
25 6 12 7 28 15 20
tengah =
(1+7) div 2
tengah tengah
I
25 6 12 7 28 15 20
tengah tengah
tengah
25 6 12 7 28 15 20
1
2
3
4
wilis k - IFUPN"V"Yk
II
25 6 12 7 28 15 20
6 7 12 25 15 20 28
6 25 7 12 15 28 20
6 7 12 15 20 25 28
5
6
7
8
Algoritma MergeSortRekursi
Deklarasi
Type TipeData : Array[1..100] of integer
Data : TipeData
n,i : integer
Procedure MergeSort(input/output Data : TipaData;
input awal,akhir : integer)
Deskripsi
output(‘Banyaknya elemen array :’)
input(n)
i traversal[1..n]
Datai  random(n)
output(‘Data yang belum terurut : ‘)
i traversal[1..n]
output(Datai)
MergeSort(Data,1,n)
output(‘Data yang sudah terurut :’)
i traversal[1..n]
output(Datai)
wilis k - IFUPN"V"Yk
Procedure MergeSort(input/output Data : TipaData;
input awal,akhir : integer)
Deklarasi Lokal
tengah : integer
Procedure Merge(input/output Data : TipaData;
input awalkiri,akhirkiri,
awalkanan,akhirkanan : integer)
Deskripsi
if (awal<akhir) then
tengah  (awal+akhir) div 2
MergeSort(Data,awal,tengah)
MergeSort(Data,tengah+1,akhir)
Merge(Data,awal,tengah,tengah+1,akhir)
endif
Procedure Merge(input/output Data : TipaData;
input awalkiri,akhirkiri,
awalkanan,akhirkanan : integer)
Deklarasi Lokal
temp : TipeData
i,kiri,kanan : integer
Deskripsi
kiri  awalkiri
kanan  awalkanan
i  awalkiri
while (kiri<=akhirkiri) or (kanan<=akhirkanan) do
if (Datakiri<=Datakanan) or (kanan>akhirkanan) then
tempi  Datakiri
kiri  kiri+1
endif
if (Datakiri>Datakanan) or (kiri>akhirkiri) then
tempi  Datakanan
kanan  kanan+1
endif
i  i + 1
endwhile
i traversal[awalkiri..akhirkanan]
Datai  tempi
MergeSort bila ditest dengan data dari ilustrasi
• Animasi sorting
https://www.youtube.com/watch?v=G4cCWc
nsO9E

More Related Content

Similar to Algoritma dan Pemrograman Cp. 6 Sorting (ralat).ppt

Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadaniaTugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania
Mutia Rahmadania
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)
Fahuda E
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
muissyahril
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Shofura Kamal
 
9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data
Wandi Parlente
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah Sorting
Dea Rokhmatun Iradewa
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian
Wandi Parlente
 
Rangkaian listrik Elektronika
Rangkaian listrik ElektronikaRangkaian listrik Elektronika
Rangkaian listrik Elektronika
David Loekito
 

Similar to Algoritma dan Pemrograman Cp. 6 Sorting (ralat).ppt (20)

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
 
desain dan analisis algoritma - Sorting.pdf
desain dan analisis algoritma - Sorting.pdfdesain dan analisis algoritma - Sorting.pdf
desain dan analisis algoritma - Sorting.pdf
 
Bab 2 sorting array
Bab 2 sorting arrayBab 2 sorting array
Bab 2 sorting array
 
Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania
 
Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadaniaTugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
 
9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data9 10 - sort-pengurutan-data
9 10 - sort-pengurutan-data
 
ratna mustika sari
ratna mustika sariratna mustika sari
ratna mustika sari
 
Analisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah SortingAnalisis Algoritma Pada Masalah Sorting
Analisis Algoritma Pada Masalah Sorting
 
kiki andriani , 5 metode sorting
kiki andriani , 5 metode sortingkiki andriani , 5 metode sorting
kiki andriani , 5 metode sorting
 
11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian11 12 -pengurutan dan-pencarian
11 12 -pengurutan dan-pencarian
 
Pengurutan (sorting )
Pengurutan (sorting )Pengurutan (sorting )
Pengurutan (sorting )
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data Sorting
 
Pertemuan 10 Tehnik Sorting
Pertemuan 10  Tehnik SortingPertemuan 10  Tehnik Sorting
Pertemuan 10 Tehnik Sorting
 
Tugas selamat riady algoritma
Tugas selamat riady algoritmaTugas selamat riady algoritma
Tugas selamat riady algoritma
 
Algoritma sorting
Algoritma sortingAlgoritma sorting
Algoritma sorting
 
Rangkaian listrik Elektronika
Rangkaian listrik ElektronikaRangkaian listrik Elektronika
Rangkaian listrik Elektronika
 

Recently uploaded

konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatan
SuzanDwiPutra
 
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
luqmanhakimkhairudin
 
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
FitriaSarmida1
 
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptxAKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
cupulin
 

Recently uploaded (20)

Skenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru PenggerakSkenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru Penggerak
 
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
BAHAN PAPARAN UU DESA NOMOR 3 TAHUN 2024
 
Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945
 
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi TrigonometriSudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
 
konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatan
 
Informatika Latihan Soal Kelas Tujuh.pptx
Informatika Latihan Soal Kelas Tujuh.pptxInformatika Latihan Soal Kelas Tujuh.pptx
Informatika Latihan Soal Kelas Tujuh.pptx
 
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdfProv.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
Prov.Jabar_1504_Pengumuman Seleksi Tahap 2_CGP A11 (2).pdf
 
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan BerkelanjutanTopik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
Topik 4_Eksplorasi Konsep LK Kelompok_Pendidikan Berkelanjutan
 
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
 
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SD
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SDMateri Sistem Pernapasan Pada Manusia untuk kelas 5 SD
Materi Sistem Pernapasan Pada Manusia untuk kelas 5 SD
 
PPT kerajaan islam Maluku Utara PPT sejarah kelas XI
PPT kerajaan islam Maluku Utara PPT sejarah kelas XIPPT kerajaan islam Maluku Utara PPT sejarah kelas XI
PPT kerajaan islam Maluku Utara PPT sejarah kelas XI
 
Pembahasan Soal Ujian Komprehensif Farmasi Perapotekan
Pembahasan Soal Ujian Komprehensif Farmasi PerapotekanPembahasan Soal Ujian Komprehensif Farmasi Perapotekan
Pembahasan Soal Ujian Komprehensif Farmasi Perapotekan
 
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
 
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptxAKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
AKSI NYATA DISIPLIN POSITIF MEMBUAT KEYAKINAN KELAS_11zon.pptx
 
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
 
Materi Bab 6 Algoritma dan bahasa Pemrograman
Materi Bab 6 Algoritma dan bahasa  PemrogramanMateri Bab 6 Algoritma dan bahasa  Pemrograman
Materi Bab 6 Algoritma dan bahasa Pemrograman
 
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
RENCANA + Link2 MATERI Training _"SISTEM MANAJEMEN MUTU (ISO 9001_2015)".
 
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOMSISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
SISTEM SARAF OTONOM_.SISTEM SARAF OTONOM
 
MODUL AJAR SENI TARI KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI TARI KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI TARI KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI TARI KELAS 6 KURIKULUM MERDEKA.pdf
 
UAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdfUAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdf
 

Algoritma dan Pemrograman Cp. 6 Sorting (ralat).ppt

  • 1. wilis k - IFUPN"V"Yk PENGURUTAN (SORTING) Algoritma dan Pemrograman Lanjut Wilis Kaswidjanti Informatika UPN “Veteran” Yk
  • 2. wilis k - IFUPN"V"Yk SORTING • Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu. • Biasanya pengurutan terbagi menjadi dua yaitu : – ascending (pengurutan dari karakter/angka kecil ke karakter/angka besar). – descending (pengurutan dari karakter/angka besar ke karakter/angka kecil).
  • 3. wilis k - IFUPN"V"Yk Metode Sorting Metode pengurutan langsung : • Metode Penukaran (Exchange selection) / Gelembung (Bubble Sort) • Metode Seleksi (Straight Selection Sort) • Metode Metode Penyisipan Langsung (Straight Insertion Sort) Metode pengurutan tidak langsung : • Shell Sort • Quick Sort • Merge Sort
  • 4. wilis k - IFUPN"V"Yk Exchange selection / Bubble Sort • metode pertama yang paling banyak dipelajari pemrogram. • Sederhana  – bubble sort tidak efisien dan menyita banyak waktu prosessor lebih banyak daripada teknik sorting yang lain. – tidak lebih dari 30 atau kurang dari 30 elemen, penggunaan bubble sort masih sangat baik
  • 5. wilis k - IFUPN"V"Yk Exchange selection / Bubble Sort • Metode gelembung / penukaran adalah metode yang mendasarkan penukaran 2 buah elemen untuk mencapai keadaan urut yang diinginkan • Langkah-langkah : 1 : Baca array elemen yang diurutkan (N) 2 : Kerjakan langkah 3 untuk I=1 s/d N-1 3 : Kerjakan langkah 4 untuk J=1 s/d N-1 4 : Cek apakah A[J]>A[J+1} 5 : Selesai
  • 6. wilis k - IFUPN"V"Yk Ilustrasi Bubble Sort 44 33 33 33 33 44 44 44 55 55 55 22 22 22 22 55 11 11 11 11 33 33 33 44 44 22 22 22 44 11 11 11 55 55 55
  • 7. wilis k - IFUPN"V"Yk 33 22 22 33 11 11 44 44 55 55 22 11 11 22 33 33 44 44 55 55
  • 8. wilis k - IFUPN"V"Yk Program berikut memakai bubble sort untuk mengurutkan data array : /* Bubble Sort */ #include <iostream.h> #include <stdlib.h> #include <conio.h> void bubble_sort(int array[], int size) {int temp, i, j; for (i=0; i<size-1; i++) for (j=0; j<size-1-i; j++) if (array[j] > array[j+1]) { temp= array[j]; array[j]= array[j+1]; array[j+1]= temp; } }
  • 9. wilis k - IFUPN"V"Yk Straight Selection Sort • Selection sort dimulai dengan menyelesaikan elemen array (misalnya elemen pertama). • Kemudian sorting mencari keseluruhan array hingga menemukan nilai yang terkecil. Sorting menempatkan nilai terkecil pada elemen tersebut, memilih elemen kedua dan mencari elemen terkecil kedua.
  • 10. wilis k - IFUPN"V"Yk Langkah-langkah Straight Selection Sort 1 : Baca array elemen yang diurutkan (n) 2 : Kerjakan langkah-langkah 3 sampai langkah 5 untuk i=1 s/d n-1 3 : Tentukan lokasi awal data terkecil Mindeks =1; kerjakan langkah 4 untuk j=i+1 s/d n 4 : Cari data terkecil dan catat lokasinya. Test apakah AMindeks > Aj? Jika ya, catat Mindeks = j 5 : Tukar nilai Amindeks dengan Aj 6 : Selesai
  • 11. wilis k - IFUPN"V"Yk Ilustrasi Straight Selection Sort
  • 12. wilis k - IFUPN"V"Yk
  • 13. wilis k - IFUPN"V"Yk void selectionSort(int arr[], int n) { int i, j, min_idx; // One by one move boundary of // unsorted subarray for (i = 0; i < n-1; i++) { // Find the minimum element in // unsorted array min_idx = i; for (j = i+1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; // Swap the found minimum element // with the first element swap(&arr[min_idx], &arr[i]); } }
  • 14. wilis k - IFUPN"V"Yk Straight Insertion Sort Dapat dibagi menjadi 2 bagian – Bagian sebelah kiri data sudah terurut (tujuan) – Bagian sebelah kanan data belum terurut (sumber) Langkah-langkah : 1 : Baca array elemen yang akan diurutkan (n) 2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1 3 : Tentukan elemen yang akan disisipkan (Temp = A [i] ; j = i-1;) 4 : Kerjakan langkah 5 selama temp <A [j] dan j >= 0; 5 : A [j+1]= A[j] ; j =j-1; 6 : Tempatkan elemen A [j+1] = Temp; 7 : Selesai
  • 15. wilis k - IFUPN"V"Yk Algoritma Straight Insertion Sort Deklarasi I,J,K,N : Integer Temp : real A : array [1..20] of real Deskripsi Input(N) {maksimal N=20} K traversal [1..N] Input (Af) {masukkan data sebanyak N} I traversal [2..N] Temp  A1 J  I-1 While (temp <Aj) and (J>=1) do Aj+1  Aj J J-1 Endwhile Aj+1  Temp
  • 16. Ilustrasi Insertion Sort A [0] A [1] A [2] A [3] A [4] A [5] 4 7 9 5 8 6 4 7 9 5 8 6 4 7 9 5 8 6 4 7 9 5 8 6 4 7 9 5 8 6 4 7 5 9 8 6 4 5 7 9 8 6 4 5 7 9 8 6 4 5 7 8 9 6 4 5 7 8 9 6 4 5 7 8 6 9 4 5 7 6 8 9 4 5 6 7 8 9
  • 17. wilis k - IFUPN"V"Yk Shell Sort Metoda ini memanfaatkan penukaran sepasang elemen untuk mencapai keadaan urut. Dua buah elemen ditukarkan dengan jarak tertentu. Rumus : ■ Jarak pertama = N / 2 ■ Jarak berikutnya = jarak sebelumnya / 2
  • 18. wilis k - IFUPN"V"Yk Contoh : A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Sehingga : ■ Jarak pertama = 9 / 2 = 4 ■ Jarak kedua = 4 / 2 = 2 ■ Jarak ketiga = 2 / 2 = 1 24 46 11 26 57 38 27 20 17
  • 19. Ilustrasi Shell Sort Jarak A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Awal Jarak = 9 div 2 = 4 24 46 11 26 57 38 27 20 17 24 46 11 26 57 38 27 20 17 24 38 11 26 57 46 27 20 17 24 38 11 26 57 46 27 20 17 24 38 11 20 57 46 27 26 17 24 38 11 20 17 46 27 26 57 17 38 11 20 24 46 27 26 57
  • 20. Jarak = 4 div 2 = 2 17 38 11 20 24 46 27 26 57 11 38 17 20 24 46 27 26 57 11 20 17 38 24 46 27 26 57 11 20 17 38 24 46 27 26 57 11 20 17 38 24 46 27 26 57 11 20 17 38 24 46 27 26 57 11 20 17 38 24 26 27 46 57 11 20 17 26 24 38 27 46 57 11 20 17 26 24 38 27 46 57 11 20 17 26 24 38 27 46 57
  • 21. Jarak = 2 div 2 = 1 11 20 17 38 24 26 27 46 57 11 20 17 38 24 26 27 46 57 11 17 20 38 24 26 27 46 57 11 17 20 38 24 26 27 46 57 11 17 20 38 24 26 27 46 57 11 17 20 24 38 26 27 46 57 11 17 20 24 38 26 27 46 57 11 17 20 24 26 38 27 46 57 11 17 20 24 26 38 27 46 57 11 17 20 24 26 27 38 46 57 11 17 20 24 26 27 38 46 57 11 17 20 24 26 27 38 46 57 Hasil 11 17 20 24 26 27 38 46 57 wilis k - IFUPN"V"Yk
  • 22. Quick Sort • Sering disebut dengan “partion exchange” sort. • Langkah-langkah : – Misal vektor A yang memiliki N elemen. – Dipilih sembarang elemen, biasanya elemen pertama, misal sebut saja X. – Kemudian, semua elemen tersebut dengan menempatkan X pada posisi J sedemikian rupa sehingga : • elemen 1 s/d J-1 memiliki nilai lebih kecil dari X dan • elemen ke J+1 s/d N memiliki nilai lebih besar dari X. – Dengan demikian, terdapat dua buah subvektor. • Contoh : 1 N 24 46 11 26 57 38 27 20 17
  • 23. Ilustrasi Quick Sort 1 N Subvektor Kiri X Subvektor Kanan 1 J-1 J+1 N 24 46 11 26 57 38 27 20 17 11 20 17 24 24 24 24 57 26 38 57 46 26 57 46 46 27 20 17 20 17 11 11 11 20 17 26 38 27 38 27 46 26 57 38 27
  • 24. Merge Sort Ide metode Merge Sort : 1. Pembagian array data menjadi dua bagian (bagian kiri dan bagian kanan) Ulangi langkah 1 secara rekursi terhadap kedua bagian tersebut, sampai tiap subarray hanya terdiri dari satu elemen. 2. Gabungkan masing-masing bagian itu sekaligus mengurutkannya, sesuai pohon yang terbentuk saat membagi array, sampai membentuk array pertama saat sebelum dibagi. Ulangi langkah 2 secara rekursi pula.
  • 25. wilis k - IFUPN"V"Yk Ilustrasi Merge Sort 1 2 3 4 5 6 7 25 6 12 7 28 15 20 25 6 12 7 28 15 20 tengah = (1+7) div 2 tengah tengah I 25 6 12 7 28 15 20 tengah tengah tengah 25 6 12 7 28 15 20 1 2 3 4
  • 26. wilis k - IFUPN"V"Yk II 25 6 12 7 28 15 20 6 7 12 25 15 20 28 6 25 7 12 15 28 20 6 7 12 15 20 25 28 5 6 7 8
  • 27. Algoritma MergeSortRekursi Deklarasi Type TipeData : Array[1..100] of integer Data : TipeData n,i : integer Procedure MergeSort(input/output Data : TipaData; input awal,akhir : integer) Deskripsi output(‘Banyaknya elemen array :’) input(n) i traversal[1..n] Datai  random(n) output(‘Data yang belum terurut : ‘) i traversal[1..n] output(Datai) MergeSort(Data,1,n) output(‘Data yang sudah terurut :’) i traversal[1..n] output(Datai)
  • 28. wilis k - IFUPN"V"Yk Procedure MergeSort(input/output Data : TipaData; input awal,akhir : integer) Deklarasi Lokal tengah : integer Procedure Merge(input/output Data : TipaData; input awalkiri,akhirkiri, awalkanan,akhirkanan : integer) Deskripsi if (awal<akhir) then tengah  (awal+akhir) div 2 MergeSort(Data,awal,tengah) MergeSort(Data,tengah+1,akhir) Merge(Data,awal,tengah,tengah+1,akhir) endif
  • 29. Procedure Merge(input/output Data : TipaData; input awalkiri,akhirkiri, awalkanan,akhirkanan : integer) Deklarasi Lokal temp : TipeData i,kiri,kanan : integer Deskripsi kiri  awalkiri kanan  awalkanan i  awalkiri while (kiri<=akhirkiri) or (kanan<=akhirkanan) do if (Datakiri<=Datakanan) or (kanan>akhirkanan) then tempi  Datakiri kiri  kiri+1 endif if (Datakiri>Datakanan) or (kiri>akhirkiri) then tempi  Datakanan kanan  kanan+1 endif i  i + 1 endwhile i traversal[awalkiri..akhirkanan] Datai  tempi
  • 30. MergeSort bila ditest dengan data dari ilustrasi

Editor's Notes

  1. wilis k - IF UPN "V" YK