Anda di halaman 1dari 27

STRUKTUR DATA DAN

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;

JAVA CODE (ASCENDING)

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

Check for next


data = {3, 4, 1, 5, 2}
WHILE Loop

(4 > 1) ? T

temp = 1
data[2] = 4
data[1] = 1
j-- = 1

(1 == 0) ? F

Check for next data = {3, 1, 4, 5, 2}


WHILE Loop

(1 == 0) ? F

Check for next


data = {3, 4, 5, 1, 2}
WHILE Loop
-

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

Stop WHILE Loop


i++ = 4

data = {1, 3, 4, 5, 2}

(5 > 2) ? T

temp = 2
data[4] = 5
data[3] = 2
j-- = 3

(3 == 0) ? F

Check for next


WHILE Loop

data = {1, 3, 4, 2, 5}

(4 > 2) ? T

temp = 2
data[3] = 4
data[2] = 2
j-- = 2

(2 == 0) ? F

Check for next


WHILE Loop

data = {1, 3, 2, 4, 5}

(1 == 0) ? F

Check for next


WHILE Loop

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

Stop FOR loop

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;

JAVA CODE (ASCENDING)

PROSES
i

data[i]

data[j]

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

Stop FOR (j) loop


i++ = 1

Hasil Pengurutan

PROSES (LANJUTAN)
i

data[i]

data[j]

Stop FOR (j) loop


i++ = 2

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]

data[i] > data[j] ?

action

(4 > 3) ? T

temp = 4
data[2] = 3
data[3] = 4
j++ = 4

(3 > 5) ? T

j++ = 5

Stop FOR (j) loop


i++ = 3

Hasil Pengurutan

data = {1, 2, 3, 4, 5}

data = {1, 2, 4, 3, 5}

PROSES (LANJUTAN)
i

data[i]

data[j]

data[i] > data[j] ?

(4 > 5) ? F

5
4

Stop FOR (j) loop


i++ = 4

Stop FOR (i) loop

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;

JAVA CODE (ASCENDING)

PROSES
not_sorted
T

Action
not_sorted = F

data[i]

data[i+1]

(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}

Stop FOR loop

Action

Hasil Pengurutan

PROSES (LANJUTAN)
not_sorted
T

Action
not_sorted = F

data[i]

data[i+1]

(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

Stop FOR loop

Hasil Pengurutan

PROSES (LANJUTAN)
not_sorted

Action

not_sorted = F

data[i]

data[i+1]

(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}

Stop FOR loop

PROSES (LANJUTAN)
not_sorted
T

Action
not_sorted = F

data[i]

data[i+1]

(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

Stop WHILE loop

Stop FOR loop

Action

Hasil Pengurutan

LATIHAN DAN TUGAS


Latihan (kelompok)

Tugas (Individu)

Buatlah algoritma (flowchart dan


pseudocode) untuk pengurutan
descending dengan menggunakan
metode insertion, bubble, dan
selection.

Buatlah program untuk melakukan


pengurutan 100 data random secara
ascending dan descending. Kemudian
analisis efektifitas algoritma dari segi
waktu running program.

Tuliskan proses perulangan


descending 5 data random.
1 & 2 = Bubble
3 & 4 = Insertion
5 & 6 = Selection

Kirim sourcode dan hasil analisis via


email (ariani.uinjkt@gmail.com)

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

Anda mungkin juga menyukai