Post on 06-Jul-2018
transcript
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
1/27
STRUKTUR DATA DANALGORITMA
Algoritma Pengurutan (part 1)
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
2/27
SORTING (PENGURUTAN)
Sorting merupakan suatu proses yang bertujuan untuk mengurutkan datsuatu urutan yang dikendaki.
Pengurutan dapat dilakukan secara ascending (menaik) atau descending(menurun)
Contoh:
Misal ada suatu kumpulan bilangan berisi 10 elemen:]
Setelah diurutkan:
Ascending : 1, 2, 3, 4, 5, 6, 7, 8 , 9, 10
Descending: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
2 5 8 9 6 3 1 4 7 1
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
3/27
ALGORITMA PENGURUTAN
Insertion Sort
Selection Sort
Bubble Sort
Shell Sort
Merge Sort
Quick Sort
dll
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
4/27
INSERTION SORT
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
5/27
INSERTION SORT
Pada dasarnya, algoritma insertion sort dilakukan dengan memilah data yang akamenjadi dua bagian yaitu data yang belum diurutkan dan data yang sudah diurutkemudian dibandingkan dan diletakkan pada urutan yang sesuai dengan perbanding
Contoh
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutkan secara asmaka langkah-langkah pengurutannya adalah:
Awal 3 5 4 1 2Iterasi 1 3 5 4 1 2
Iterasi 2 3 5 4 1 2
Iterasi 3 3 4 5 1 2
Iterasi 4 1 3 4 5 2
Iterasi 5 1 2 3 4 5
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
6/27
ALGORITMA (ASCENDING)
For i := 1 to n-1 doBegin
j := i;while (data[j-1] > data[j]) do
Begintemp = data[j];data[j] = data[j-1];
data[j-1] = temp; j--;
if (j == 0) thenbreak;
endIf;end;
end;
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
7/27
JAVA CODE (ASCENDING)
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
8/27
PROSES
i j data[j-1] data[j] While(data[j-1] > data[j]) ?
Action If (j == 0) ?
Action
1 1 3 5 (3 > 5) ? F i++ = 2 - -
2 2 5 4 (5 > 4) ? T
temp = 4
data[2] = 5
data[1] = 4
j-- = 1
(1 == 0) ? FCheck for n
WHILE Loop
1 3 4 (3 > 4) ? F i++ = 3 - -
3 3 5 1 (5 > 1) ? T
temp = 1
data[3] = 5
data[2] = 1
j-- = 2
(2 == 0) ? FCheck for n
WHILE Loop
2 4 1 (4 > 1) ? T
temp = 1
data[2] = 4
data[1] = 1
j-- = 1
(1 == 0) ? FCheck for n
WHILE Loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
9/27
PROSES (LANJUTAN)
i j data[j-1] data[j]While
(data[j-1] > data[j]) ?Action
If
(j == 0) ?Action
3 1 3 1 (3 > 1) ? T
temp = 1data[1] = 3
data[0] = 1
j-- = 0
(0 == 0) ? TStop WHILE Lo
i++ = 4
4 4 5 2 (5 > 2) ? T
temp = 2
data[4] = 5
data[3] = 2
j-- = 3
(3 == 0) ? FCheck for
WHILE Loop
3 4 2 (4 > 2) ? T
temp = 2
data[3] = 4data[2] = 2
j-- = 2
(2 == 0) ? F Check forWHILE Loop
2 3 2 (3 > 2) ? T
temp = 2
data[2] = 3
data[1] = 2
j-- = 1
(1 == 0) ? FCheck for
WHILE Loop
1 1 2 (1 > 2) ? F i++ = 5 - -
5 Stop FOR loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
10/27
SELECTION SORT
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
11/27
SELECTION SORT
Selection sort adalah cara pengurutan dengan menelusuri dan mencayang terkecil / terbesar dari seluruh elemen yang ada dan menempatposisi pertama hingga seluruh elemen terurut.
Contoh
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutkaascending, maka langkah-langkah pengurutannya adalah:
Awal 3 5 4 1 2
Iterasi 1 1 5 4 3 2
Iterasi 2 1 2 4 3 5
Iterasi 3 1 2 3 4 5
Iterasi 4 1 2 3 4 5
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
12/27
ALGORITMA (ASCENDING)
For i := 0 to n-1 dobegin
for i := i+1 to n dobegin
if data[i] > data[j] then
temp = data[i];data[i] = data[j];data[j] = temp;
endIf;end;
end;
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
13/27
JAVA CODE (ASCENDING)
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
14/27
PROSES
i j data[i] data[j] data[i] > data[j] ? action Hasil P
0 1 3 5 (3 > 5) ? F j++ = 2 data = {3
2 3 4 (3 > 4) ? F j++ = 3 data = {3
3 3 1 (3 > 1)? T
temp = 3
data[0] = 1
data[3] = 3
j++ = 4
data = {1
4 1 2 (1 > 2) ? F j++ = 5 data = {1
5Stop FOR (j) loop
i++ = 1
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
15/27
PROSES (LANJUTAN)
i j data[i] data[j] data[i] > data[j] ? action Hasil P
1 2 5 4 (5 > 4) ? T
temp = 5
data[1] = 4
data[2] = 5
j++ = 3
data = {1
3 4 3 (4 > 3) ? T
temp = 4
data[1] = 3
data[3] = 4
j++ = 4
data = {1
4 3 2 (3 > 2)? F
temp = 3
data[1] = 2
data[3] = 3
j++ = 5
data = {1
5Stop FOR (j) loop
i++ = 2
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
16/27
PROSES (LANJUTAN)
i j data[i] data[j] data[i] > data[j] ? action Hasil P
2 3 4 3 (4 > 3) ? T
temp = 4
data[2] = 3
data[3] = 4
j++ = 4
data = {1
4 3 5 (3 > 5) ? T j++ = 5 data = {1
5 Stop FOR (j) loopi++ = 3
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
17/27
PROSES (LANJUTAN)
i j data[i] data[j] data[i] > data[j] ? action Hasil P
3 4 4 5 (4 > 5) ? F j++ = 5 data = {1
5Stop FOR (j) loop
i++ = 4
4 Stop FOR (i) loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
18/27
BUBBLE SORT
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
19/27
BUBBLE SORT
Proses pengurutan dengan metode bubble sort dilakukanmembandingkan dua elemen yang berdampingan dan mengubah posyang dibandingkan.
Dalam kasus ascending, jika elemen kiri lebih besar dari elemen kaposisi kedua elemen tersebut akan ditukar. Begitu pula sebaliknya pdescending, jika elemen kiri lebih kecil dari elemen kanan maka poelemen tersebut akan ditukar
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
20/27
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutsecara ascending, maka langkah-langkah pengurutannya adalah:
CONTOH
Awal 3 5 4 1 2
Iterasi 1 3 4 1 2 5
Iterasi 2 3 1 2 4 5Iterasi 3 1 2 3 4 5
Iterasi 4 1 2 3 4 5
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
21/27
ALGORITMA (ASCENDING)
While(not_sorted)begin
not_sorted = false;for i := 0 to n-1 dobegin
if data[i] > data[i+1] then
temp = data[i];data[i] = data[i+1];data[i+1] = temp;
endIf;end;
end;
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
22/27
JAVA CODE (ASCENDING)
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
23/27
PROSESnot_sorted Action i data[i] data[i+1] (data[i] > data[i+1]) ? Action
T not_sorted = F 0 3 5 3 > 5 ? F i++ = 1 d
1 5 4 5 > 4 ? T
temp = 5
data[1] = 4
data[2] = 5
not_sorted = t
i++ = 2
d
2 5 1 5 > 1 ? T
temp = 5
data[2] = 1
data[3] = 5
not_sorted = t
i++ = 3
d
3 5 2 5 > 2 ? T
temp = 5
data[3] = 2
data[4] = 5
not_sorted = t
i++ = 4
d
4 Stop FOR loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
24/27
PROSES (LANJUTAN)
not_sorted Action i data[i] data[i+1] (data[i] > data[i+1]) ? Action
T not_sorted = F 0 3 4 3 > 4 ? F i++ = 1
1 4 1 4 > 1 ? T
temp = 4
data[1] = 1
data[2] = 4
not_sorted = t
i++ = 2
2 4 2 4 > 2 ? T
temp = 4data[2] = 2
data[3] = 4
not_sorted = t
i++ = 3
3 4 5 4 > 5 ? F i++ = 4
4 Stop FOR loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
25/27
PROSES (LANJUTAN)
not_sorted Action I data[i] data[i+1] (data[i] > data[i+1]) ? Action H
T not_sorted = F 0 3 1 3 > 1 ? T
temp = 3
data[0] = 1
data[1] = 3
not_sorted = t
i++ = 1
dat
1 3 2 3 > 2 ? T
temp = 3
data[1] = 2data[2] = 3
not_sorted = t
i++ = 2
dat
2 3 4 3 > 4 ? F i++ = 3 dat
3 4 5 4 > 5 ? F i++ = 4 dat
4 Stop FOR loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
26/27
PROSES (LANJUTAN)
not_sorted Action i data[i] data[i+1] (data[i] > data[i+1]) ? Action
T not_sorted = F 0 1 2 1 > 2 ? F i++ = 1 d
1 2 3 2 > 3 ? F i++ = 2 d
2 3 4 3 > 4 ? F i++ = 3 d
3 4 5 4 > 5 ? F i++ = 4 d
4 Stop FOR loop
F Stop WHILE loop
8/17/2019 4061 Ais.database.model.file.PertemuanFileContent S06
27/27
LATIHAN DAN TUGAS
Latihan (kelompok)
Buatlah algoritma (flowchart danpseudocode) untuk pengurutandescending dengan menggunakanmetode insertion, bubble, danselection.
Tuliskan proses perulangandescending 5 data random.
1 & 2 = Bubble
3 & 4 = Insertion
5 & 6 = Selection
Tugas (Individu)
Buatlah program untuk melapengurutan 100 data randomascending dan descending. Kanalisis efektifitas algoritmawaktu running program.
Kirim sourcode dan hasil anaemail (ariani.uinjkt@gmail.c
Batas Kumpul: TI.A: 11 April 2016 – 23:59 WI
TI.B: 10 April 2016 – 23:59 WI
TI.C: 17 April 2016 – 23:59 WIB
mailto:ariani.uinjkt@gmail.commailto:ariani.uinjkt@gmail.com