Anda di halaman 1dari 37

Sorting & Searching

Sorting
Algoritma sorting yang akan dibahas:

insertion sort
merge sort
two way merge sort
quick sort
radix sort
heap sort

Sorting secara
ascending kecil besar
descending besar kecil

Insertion Sort (1)


misal: 10 2 5 7 8 11 3 2 diurutkan ascending
-------------------------------------------------------------------------------

Mulai dari i = 2
10 2 5 7 8 11 3 2
^
2 disisipkan pada lokasi: di depan 10
jadi: 2 10 5 7 8 11 3 2
-------------------------------------------------------------------------------

i = 3
2 10 5 7 8 11 3 2
^
5 disisipkan pada lokasi: di antara 2 dan 10
jadi: 2 5 10 7 8 11 3 2
-------------------------------------------------------------------------------

i = 4
2 5 10 7 8 11 3 2
^
7 disisipkan pada lokasi: di antara 5 dan 10
jadi: 2 5 7 10 8 11 3 2
Dan Seterusnya

Insertion Sort (2)


misal: 10 2 5 7 8 11 3 2
diurutkan ascending
i=0 : -
i=1 : -, 10
i=2 : -, 2, 10
i=3 : -, 2, 5, 10
i=4 : -, 2, 5, 7, 10
Dst.
Diurutkan descending
i=0 : +
i=1 : +, 10
i=2 : +, 10, 2
i=3 : +, 10, 5, 2
i=4 : +, 10, 7, 5, 2
Dst.

Merge Sort
10
2
n = 10

23

SPLIT (berdasarkan hasil n div 2)


(10
2
5
6
23 )( 5
6
7
2
1)
n = 5
n = 5
(10
2 )( 5
6
23 )( 5
6 )( 7
2
1)
n = 2
n = 3
n = 2
n = 3
( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 2 1 )
n=1 n=1 n=1
n=2
n=1 n=1 n=1 n=2
( 10 )( 2 )( 5 )( 6 )( 23 )( 5 )( 6 )( 7 )( 2 )( 1 )
MERGE (Berdasarkan urutan split)
( 10 )( 2 )( 5 )( 6 23 )( 5 )( 6 )( 7 )( 1
( 2 10 ) ( 5 6 23 ) ( 5
6 ) ( 1
2
( 2
5
6
10 23 )( 1
2
5
6
7 )
( 1
2
2
5
5
6
6
7 10 23 )

2 )
7 )

Two Way Merge Sort


10

(2,10)

(5,6)

(2,5,6,10)

23

(5,23)

(6,7)

(5,6,7,23)

(1,2)

(2,5,5,6,6,10,23)

(1,2)

(1,2,2,5,5,6,6,10,23)

(1,2)

Quick Sort
Contoh :
5 4 3 1 3 5 7 1 5
Akan diurutkan secara Ascending
Pilih data pertama sebagai Pivot kemudian
letakkan semua angka yang lebih kecil di
kiri dan yang lebih besar di kanan
Kemudian lanjutkan untuk kedua belah sisi
sampai semua telah menjadi pivot
4
3
1
3
1
3
1
1 | 3 |
1 | 1 | 3 |
1 | 1 | 3 |

3
1
3
3
3

|
|
|
|

1
4
4
4
4

|
|
|
|
|

5
5
5
5
5

|
|
|
|
|

5
5
5
5
5

|
|
|
|

7
5
5
7
5 | 7
5 | 7
5 | 7

Radix Sort
Radix Sort : Sorting data yang
memanfaatkan aplikasi linked-list
Caranya : membagi data dalam beberapa
kolom (pocket), selanjutnya
mengurutkan data berdasarkan
karakter pada posisi kolom
terakhir sampai kolom pertama.
Apabila maksimum jumlah digit
dari data tersebut adalah m,
maka ada m tahap pengurutan.

Sorting menggunakan RADIX-SORT


Contoh:
73, 65, 52, 77, 24, 83, 17, 35, 96, 62, 41, 87, 9,
11
Jumlah iterasi (m) = jumlah digit terbanyak
Iterasi 1 :
Pocket:

Langkah1
(satuan)

0 1

8 9

4
1

5
2

7
3

2
4

6
5

9
6

7
7

0
9

1
1

6
2

8
3

3
5

1
7
8
7

Gabungkan isi semua elemen:


41, 11, 52, 62, 73, 83, 24, 65, 35, 96, 77, 17, 87, 09

Sorting menggunakan RADIX-SORT


Iterasi Ke 2 :
Hasil iterasi 1 (satuan) :
41, 11, 52, 62, 73, 83, 24, 65, 35, 96, 77, 17, 87, 09
Pocket:

Langkah2
(puluhan
)

0
9

1
1

2
4

3
5

4
1

5
2

6
2

7
3

8
3

9
6

6
5

7
7

8
7

1
7

Gabungkan isi semua elemen:


09, 11, 17, 24, 35, 41, 52, 62, 65, 73, 77, 83, 87, 96
(hasil sorting)

Heap Sort

Diberikan input file


Lakukan insert data dalam bentuk
binary tree
Lakukan sorting pada binary tree di
atas untuk masing-masing heap
Hasil sorting merupakan inisialisasi
heap
Lakukan heap sort

Insert Data
Urutkan data : 7, 11, 4, 3, 25, 60, 41
Binary Tree disusun berurutan, insert anak kiri
dahulu

Phase 1 : Buat Binary


Tree
7
11
3

4
25

60

41

Phase 2 : Inisialisasi/Building Heap


Parent/root harus lebih besar daripada anakanaknya
7

11
3

4
25

60

25
41

11

60

41

Phase 2 : Inisialisasi/Building Heap


Parent/root harus lebih besar daripada anakanaknya
7

25
3

11

60

25
41

60
11

41

Phase 2 : Inisialisasi/Building Heap


Parent/root harus lebih besar daripada anak-anaknya

60

25
3

60
11

25
41

7
11

41

Phase 2 : Inisialisasi/Building Heap


Parent/root harus lebih besar daripada anak-anaknya

60

60

25
3

7
11

25
41

41
11

Kondisi Heap terpenuhi

Phase 3 : Heap Sort / Removing Heap


(Yang dihapus adalah root, sebagai gantinya adalah anak terbawah paling kanan)
Heap Sort, i = 7, Sorting = { 60 }

60

25
3

41
11

25
7

41
11

Phase 3 : Heap Sort


Heap Sort, i = 7, Sorting = { 60 }

41

25
3

41
11

25
3

7
11

Phase 3 : Heap Sort


Heap Sort, i = 6, Sorting = { 60, 41 }

41

25
3

7
11

25
3

7
11

Phase 3 : Heap Sort


Heap Sort, i = 6, Sorting = { 60, 41 }

25
3

25

7
11

4
3

7
11

Phase 3 : Heap Sort


Heap Sort, i = 6, Sorting = { 60, 41 }

25

4
3

25

7
11

11
3

Phase 3 : Heap Sort


Heap Sort, i = 5, Sorting = { 60, 41, 25 }

25

11
3

11
3

Phase 3 : Heap Sort


Heap Sort, i = 5, Sorting = { 60, 41, 25 }

11
3

11

4
3

Phase 3 : Heap Sort


Heap Sort, i = 4, Sorting = { 60, 41, 25, 11 }

11

4
3

Phase 3 : Heap Sort


Heap Sort, i = 4, Sorting = { 60, 41, 25, 11 }

Phase 3 : Heap Sort


Heap Sort, i = 3, Sorting = { 60, 41, 25, 11, 7 }

Phase 3 : Heap Sort


Heap Sort, i = 3, Sorting = { 60, 41, 25, 11, 7 }

Phase 3 : Heap Sort


Heap Sort, i = 2, Sorting = { 60, 41, 25, 11, 7, 4 }

4
3
3

Phase 3 : Heap Sort


Heap Sort, i = 1, Sorting = { 60, 41, 25, 11, 7, 4, 3 }

Phase 3 : Heap Sort


Heap Sort, i = 0, Sorting = { 60, 41, 25, 11, 7, 4, 3 }

Searching:
Algoritma Searching yag akan
dibahas:

Binary Search Tree


Fibonacci Search Tree
Linier Interpolation

Binary Search Tree


Kmid = (K1 + Kn) / 2 dibulatkan ke bawah
(floor function)
Contoh:
2, 3, 4, 9, 11, 12, 13, 17, 18, 20, 24, 25, 27,
29, 30, 35, 37, 39, 40, 45
Kmid = (1+20) / 2 = 10

Binary Tree yang Terbentuk


K10
K15
K5

K12
K11

K2

K17

K7
K3

K14

K6
K9
K4

K19

K16
K13

K8
K1

K18

K20

Fibbonaci Search Tree


Fib = Fm + Fm+1
Barisan bilangan Fibbonaci:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55,
Misal n=20,
Maka yang diambil root adalah bilangan
di bawah n atau sama dengan bil
Fibbonaci, yaitu 13.
Dibulatkan ke atas (ceiling function)

Fibbonaci Search Tree


K13

K18

K8

K16
K15

K5

K3
K2
K1

K11 K14
K7

K4

K6

K10
K9

K20

K12

K17 K19

Linear Interpolation
Indeks (key) = x 1

Datarecord = y

15

19

20

21

(y yL) / (yu yL) = (x xL) / (xu xL)


(15 2) / (21 2) = (x 1) / (9 1)
x = (104/19) + 1
= 5,. + 1 = 5 + 1 = 6

Tugas
Suatu file tidak terurut dengan key sebagai berikut:
5,7,8,3,2,1,6,9,15,14,12,13,11,4,10
Lakukan sort secara ascending dengan menggunakan
:

Insertion Sort
Quick Sort
Two-way Merge Sort
Heap Sort
Radix Sort

Kemudian gambarkan pohon binernya (binary tree)


yang menunjukkan algoritma penelusuran dari soal
no. 1 dengan menggunakan:
BST
FST

Anda mungkin juga menyukai