ALGORITMA
Algoritma Pengurutan (part 1)
SORTING (PENGURUTAN)
Sorting merupakan suatu proses yang bertujuan untuk mengurutkan data dalam
suatu 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
10
ALGORITMA PENGURUTAN
Insertion Sort
Selection Sort
Bubble Sort
Shell Sort
Merge Sort
Quick Sort
dll
INSERTION SORT
INSERTION SORT
Pada dasarnya, algoritma insertion sort dilakukan dengan memilah data yang akan diurutkan
menjadi dua bagian yaitu data yang belum diurutkan dan data yang sudah diurutkan. Untuk
kemudian dibandingkan dan diletakkan pada urutan yang sesuai dengan perbandingan.
Contoh
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutkan secara ascending,
maka langkah-langkah pengurutannya adalah:
Awal
Iterasi 1
Iterasi 2
Iterasi 3
3
3
3
5
5
4
4
4
5
1
1
1
2
2
2
Iterasi 4
Iterasi 5
1
1
3
2
4
3
5
4
2
5
ALGORITMA (ASCENDING)
For i := 1 to n-1 do
Begin
j := i;
while (data[j-1] > data[j]) do
Begin
temp = data[j];
data[j] = data[j-1];
data[j-1] = temp;
j--;
if (j == 0) then
break;
endIf;
end;
end;
PROSES
i
data[j-1]
data[j]
While
(data[j-1] > data[j]) ?
(3 > 5) ? F
i++ = 2
Action
If
(j == 0) ?
Action
Hasil Pengurutan
data = {3, 5, 4, 1, 2}
(5 > 4) ? T
temp = 4
data[2] = 5
data[1] = 4
j-- = 1
(3 > 4) ? F
i++ = 3
(5 > 1) ? T
temp = 1
data[3] = 5
data[2] = 1
j-- = 2
(2 == 0) ? F
(4 > 1) ? T
temp = 1
data[2] = 4
data[1] = 1
j-- = 1
(1 == 0) ? F
(1 == 0) ? F
data = {3, 4, 5, 1, 2}
PROSES (LANJUTAN)
i
data[j-1]
data[j]
While
(data[j-1] > data[j]) ?
Action
Action
Hasil Pengurutan
(3 > 1) ? T
temp = 1
data[1] = 3
data[0] = 1
j-- = 0
(0 == 0) ? T
data = {1, 3, 4, 5, 2}
(5 > 2) ? T
temp = 2
data[4] = 5
data[3] = 2
j-- = 3
(3 == 0) ? F
data = {1, 3, 4, 2, 5}
(4 > 2) ? T
temp = 2
data[3] = 4
data[2] = 2
j-- = 2
(2 == 0) ? F
data = {1, 3, 2, 4, 5}
(1 == 0) ? F
data = {1, 2, 3, 4, 5}
data = {1, 2, 3, 4, 5}
(3 > 2) ? T
temp = 2
data[2] = 3
data[1] = 2
j-- = 1
(1 > 2) ? F
i++ = 5
If
(j == 0) ?
SELECTION SORT
SELECTION SORT
Selection sort adalah cara pengurutan dengan menelusuri dan mencari elemen
yang terkecil / terbesar dari seluruh elemen yang ada dan menempatkannya di
posisi pertama hingga seluruh elemen terurut.
Contoh
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutkan secara
ascending, maka langkah-langkah pengurutannya adalah:
Awal
Iterasi 1
Iterasi 2
3
1
1
5
5
2
4
4
4
1
3
3
2
2
5
Iterasi 3
Iterasi 4
ALGORITMA (ASCENDING)
For i := 0 to n-1 do
begin
for i := i+1 to n do
begin
if data[i] > data[j] then
temp = data[i];
data[i] = data[j];
data[j] = temp;
endIf;
end;
end;
PROSES
i
data[i]
data[j]
action
(3 > 5) ? F
j++ = 2
data = {3, 5, 4, 1, 2}
(3 > 4) ? F
j++ = 3
data = {3, 5, 4, 1, 2}
data = {1, 5, 4, 3, 2}
data = {1, 5, 4, 3, 2}
(3 > 1)? T
temp = 3
data[0] = 1
data[3] = 3
j++ = 4
(1 > 2) ? F
j++ = 5
Hasil Pengurutan
PROSES (LANJUTAN)
i
data[i]
data[j]
action
Hasil Pengurutan
(5 > 4) ? T
temp = 5
data[1] = 4
data[2] = 5
j++ = 3
data = {1, 4, 5, 3, 2}
(4 > 3) ? T
temp = 4
data[1] = 3
data[3] = 4
j++ = 4
data = {1, 3, 5, 4, 2}
(3 > 2)? F
temp = 3
data[1] = 2
data[3] = 3
j++ = 5
data = {1, 2, 4, 3, 5}
PROSES (LANJUTAN)
i
data[i]
data[j]
action
(4 > 3) ? T
temp = 4
data[2] = 3
data[3] = 4
j++ = 4
(3 > 5) ? T
j++ = 5
Hasil Pengurutan
data = {1, 2, 3, 4, 5}
data = {1, 2, 4, 3, 5}
PROSES (LANJUTAN)
i
data[i]
data[j]
(4 > 5) ? F
5
4
action
j++ = 5
Hasil Pengurutan
data = {1, 2, 3, 4, 5}
BUBBLE SORT
BUBBLE SORT
Proses pengurutan dengan metode bubble sort dilakukan dengan
membandingkan dua elemen yang berdampingan dan mengubah posisi elemen
yang dibandingkan.
Dalam kasus ascending, jika elemen kiri lebih besar dari elemen kanan maka
posisi kedua elemen tersebut akan ditukar. Begitu pula sebaliknya pada kasus
descending, jika elemen kiri lebih kecil dari elemen kanan maka posisi kedua
elemen tersebut akan ditukar
CONTOH
Misal ada sebuah array dengan jumlah elemen 5 (3, 5, 4, 1, 2) akan diurutkan
secara ascending, maka langkah-langkah pengurutannya adalah:
Awal
Iterasi 1
3
3
5
4
4
1
1
2
2
5
Iterasi 2
Iterasi 3
Iterasi 4
3
1
1
1
2
2
2
3
3
4
4
4
5
5
5
ALGORITMA (ASCENDING)
While(not_sorted)
begin
not_sorted = false;
for i := 0 to n-1 do
begin
if data[i] > data[i+1] then
temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
endIf;
end;
end;
PROSES
not_sorted
T
Action
not_sorted = F
data[i]
data[i+1]
3>5?F
i++ = 1
data = {3, 5, 4, 1, 2}
5>4?T
temp = 5
data[1] = 4
data[2] = 5
not_sorted = t
i++ = 2
data = {3, 4, 5, 1, 2}
5>1?T
temp = 5
data[2] = 1
data[3] = 5
not_sorted = t
i++ = 3
data = {3, 4, 1, 5, 2}
5>2?T
temp = 5
data[3] = 2
data[4] = 5
not_sorted = t
i++ = 4
data = {3, 4, 1, 2, 5}
Action
Hasil Pengurutan
PROSES (LANJUTAN)
not_sorted
T
Action
not_sorted = F
data[i]
data[i+1]
3>4?F
i++ = 1
data = {3, 4, 1, 2, 5}
4>1?T
temp = 4
data[1] = 1
data[2] = 4
not_sorted = t
i++ = 2
data = {3, 1, 4, 2, 5}
data = {3, 1, 2, 4, 5}
data = {3, 1, 2, 4, 5}
Action
4>2?T
temp = 4
data[2] = 2
data[3] = 4
not_sorted = t
i++ = 3
4>5?F
i++ = 4
Hasil Pengurutan
PROSES (LANJUTAN)
not_sorted
Action
not_sorted = F
data[i]
data[i+1]
Action
Hasil Pengurutan
3>1?T
temp = 3
data[0] = 1
data[1] = 3
not_sorted = t
i++ = 1
data = {1, 3, 2, 4, 5}
data = {1, 2, 3, 4, 5}
3>2?T
temp = 3
data[1] = 2
data[2] = 3
not_sorted = t
i++ = 2
3>4?F
i++ = 3
data = {1, 2, 3, 4, 5}
4>5?F
i++ = 4
data = {1, 2, 3, 4, 5}
PROSES (LANJUTAN)
not_sorted
T
Action
not_sorted = F
data[i]
data[i+1]
1>2?F
i++ = 1
data = {1, 2, 3, 4, 5}
2>3?F
i++ = 2
data = {1, 2, 3, 4, 5}
3>4?F
i++ = 3
data = {1, 2, 3, 4, 5}
4>5?F
i++ = 4
data = {1, 2, 3, 4, 5}
4
F
Action
Hasil Pengurutan
Tugas (Individu)
Batas Kumpul:
TI.A: 11 April 2016 23:59 WIB
TI.B: 10 April 2016 23:59 WIB
TI.C: 17 April 2016 23:59 WIB