Anda di halaman 1dari 37

ASAS SAINS KOMPUTER

PEMBANGUNAN ALGORITMA
DSKP
Search dan Sort
Pembangunan
Algoritma 01 Linear Search
Teknik mencari item dalam satu senarai linear. Carian bermula dari item yang
pertama, kedua dan seterusnya sehingga item diperoleh.

02 Binary Search
Teknik carian yang melibatkan dwi pilihan. Sebelum memulakan carian item-
item perlu diisih dalam turutan menaik. Item yang berada di tengah senarai
akan disemak. Jika item dikehendaki lebih kecil, maka item di tengah dan
sebelah kiri diabaikan.

03 Bubble Sort
Teknik menyisih item dalam turutan menaik atau menurun dengan
membandingkan dua item pertama dalam senarai. Item pertama akan bertukar
tempat jika nilai item pertama lebih besar daripada item kedua (Turutan menaik).

04 Bucket Sort
Teknik mengasingkan item-item dalam senarai tertentu ke dalam baldi,
seterusnya item-item dalam baldi akan disusun semula ke dalam senarai.
ASK T3

BUCKET SORT
Pseudokod & Carta Alir
Menulis Pseudokod dan Melukis Carta Alir
Bucket Sort

Teknik mengasingkan item-item


dalam senarai tertentu ke dalam
baldi, seterusnya item-item dalam
baldi akan disusun semula ke dalam
senarai.
.

ISIH CARI ISIH


Bucket Menulis Pseudokod
Sort 1. Bucket Sort ialah satu isihan yang
menyusun item-item dalam satu senarai
mengikut kategori.

2. Item-item akan dimasukkan ke dalam baldi


mengikut kategori yang ditetapkan.

3. Item-item di dalam setiap baldi akan diisih


mengikut urutan menaik atau menurun.

* Isihan dilakukan sebanyak dua kali [ 2 X ]


- mengikut julat pada baldi
- mengikut urutan dalam setiap baldi
Bucket
Sort
Menulis Pseudokod
Proses Pembinaan Algoritma

1. Wujudkan beberapa buah baldi untuk menyimpan item-item dalam senarai


sementara.

2. Tentukan nilai pembahagi untuk menentukan supaya item-item dapat dimasukkan


ke dalam baldi.

3. Masukkan setiap item sementara ke dalam baldi berdasarkan item bagi nilai
pembahagi yang telah ditetapkan.

4. Isih item-item di dalam setiap baldi dan masukkan semula ke dalam senarai baru.
Menulis Pseudokod

• L = 22, 45, 12, 8, 10, 6, 72, 81, 33, 18, 50, 14,
[ Senarai item yg perlu disisih ]

ARRAY 0 1 2 3 …. 12
(Ked. Indeks)
ITEM 22 45 12 …. …. 14

• i = 0 [ pemboleh ubah yg mewakili kedudukan dlm item L ]


• J = 0 [ pemboleh ubah yg mewakili kedudukan baldi ]
• n = 12 (bil senarai ITEM)
nB = [ pemboleh ubah yg mewakili berapa bil baldi diperlukan ]
Menulis Pseudokod
Mula
Setkan senarai L = [ 22, 45, 12, 8, 10, 6, 72, 81, 33, 18, 50, 14 ]
Setkan senaraiBaharu [ ]
Isytihar pemboleh ubah i, j, n, nB
Setkan n = 12
Setkan nB = bilangan baldi ( Max 81, Min 6 )
Wujudkan baldi kosong
Masukkan item ke dalam baldi
Setkan nilai pembahagi ( Max (81) + 1 ) / nB (10) = 9
Setkan i = 0
For B [ j ] = i [ ] / 9
jika B [ j ] = i [ ]
Masukkan senarai [ i ] ke dalam baldi
Kira i = i + 1
Menulis Pseudokod
------
Setkan j = 0
for j < nB
jika Baldi [ j ] kosong
kira j = j + 1
jika tidak
Isih item (susun item menggunakan Bubble Sort)
Kira j = j + 1
Cantum dan masukkan item ke dalam senarai Baharu [ ]
Papar senaraiBaharu [ ]
Tamat
Bincangkan bersama-sama ahli tentang langkah-
langkah untuk menyisih senarai nombor di bawah
mengikut urutan menaik menggunakan bucket sort.

22 45 12 8 10 6 72 81 33 18 50 14

Senarai nombor akan diisih mengikut urutan menaik.


Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
Item 22 45 12 8 10 6 72 81 33 18 50 14

Pembolehubah kedudukan Index sebagai arr [ i ]


Jumlah item di dalam kedudukan Index arr [ i ] = 12
Oleh itu pembolehubah bil item (N) = 12

max = 81
min = 6
Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0
1 Untuk menyisih item ini memerlukan 10 baldi dengan
2 mewujudkan julat antara 0 hingga 9
3
4
dan baldi sebagai pembolehubah = nB
5 n = 12
6 max = 81
7 min = 6
8
9
Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0
Satu nilai pembahagi digunakan
1 untuk memasukkan item ke dalam baldi dengan formula
2
3 Pembahagi = kira ( (max + 1) / nB
4 = kira ( ( 81 + 1 ) / 10 ) n = 12
5 = kira ( 82 / 10 ) max = 81
6 = kira ( 8.2 ) min = 6
7 = 9 nB = 10
8 pembahagi = 9
9
Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 Jika merujuk kepada kedudukan index arr [ ] = i


1 dan item yang dimasukkan ke dalam arr [ ] adalah betul
Kedudukan baldi ditentukan menggunakan formula :
2
3 n = 12
B [ j ] = arr [ ]
4 max = 81
5 min = 6
di mana kedudukan baldi j = list ( arr [ i ] / pembahagi)
6 nB = 10
7 pembahagi = 9
8
B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
Mulakan dari indeks pertama
arr [ 0 ] i=0

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 j = list ( arr [ i ] / pembahagi )


1 j = list ( 22 / 9 )
2 22 j = list ( 2.4444 ) n = 12
3 j = 2 max = 81
4
min = 6
5 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 2 ] = 22 nB = 10
7
8 Masukkan item 22 ke dalam baldi 2 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
arr [ 1 ] i = 1 ( 0 + 1)

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 j = list ( arr [ i ] / pembahagi )


1 j = list ( 45 / 9 )
2 22 j = list ( 5) n = 12
3 j = 5 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 5 ] = 45 nB = 10
7
8 Masukkan item 45 ke dalam baldi 5 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
i = 2 ( 1 + 1)
arr [ 2 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 j = list ( arr [ i ] / pembahagi )


1 12 j = list ( 12 / 9 )
2 22 j = list ( 1.3333 ) n = 12
3 j = 1 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 1 ] = 12 nB = 10
7
8 Masukkan item 12 ke dalam baldi 1 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
i = 3 ( 2 + 1)
arr [ 3 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 j = list ( arr [ i ] / pembahagi )


1 12 j = list ( 8 / 9 )
2 22 j = list ( 0.888 ) n = 12
3 j = 0 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B[0]=8 nB = 10
7
8 Masukkan item 8 ke dalam baldi 0 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
i = 4 ( 3 + 1)
arr [ 4 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( 10 / 9 )
2 22 j = list ( 1.1111 ) n = 12
3 j = 1 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 1 ] = 10 nB = 10
7
8 Masukkan item 10 ke dalam baldi 1 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
i = 5 ( 4 + 1)
arr [ 5 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( 6 / 9 )
2 22 j = list ( 0.666 ) n = 12
3 j = 0 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B[0]=6 nB = 10
7
8 Masukkan item 6 ke dalam baldi 0 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
i = 6 ( 5 + 1)
arr [ 6 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( 72 / 9 )
2 22 j = list ( 8 ) n = 12
3 j = 8 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 8 ] = 72 nB = 10
7
8 72 Masukkan item 72 ke dalam baldi 8 B [ j ] = arr [ i ]
9 j = list ( arr [ i ] / pembahagi )
arr [ 7 ] i = 7 ( 6 + 1)

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( 81 / 9 )
2 22 j = list ( 9 ) n = 12
3 j = 9 max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 9 ] = 81 nB = 10
7
8 72 Masukkan item 81 ke dalam baldi 9 B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
arr [ 8 ] i = ________

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( ____ / ____ )
2 22 j = list ( ____ ) n = 12
3 j = ____ max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ ____ ] = _____1 nB = 10
7
8 72 Masukkan item ____ ke dalam baldi _____ B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
arr [ 9 ] i = ________

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( ____ / ____ )
2 22 j = list ( ____ ) n = 12
3 j = ____ max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ ____ ] = _____1 nB = 10
7
8 72 Masukkan item ____ ke dalam baldi _____ B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
arr [ 10 ] i = ________

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( ____ / ____ )
2 22 j = list ( ____ ) n = 12
3 j = ____ max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ ____ ] = _____1 nB = 10
7
8 72 Masukkan item ____ ke dalam baldi _____ B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
arr [ 11 ] i = ________

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 j = list ( ____ / ____ )
2 22 j = list ( ____ ) n = 12
3 j = ____ max = 81
4
min = 6
5 45 B [ j ] = arr [ i ] pembahagi = 9
6 B [ ____ ] = _____1 nB = 10
7
8 72 Masukkan item ____ ke dalam baldi _____ B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
i = ________
arr [ 11 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 j = list ( arr [ i ] / pembahagi )


1 12 10 14 j = list ( 14 / 9 )
2 22 18 j = list ( 1.555 ) n = 12
3 33 j = 1 max = 81
4
min = 6
5 45 50 B [ j ] = arr [ i ] pembahagi = 9
6 B [ 1 ] = 14 nB = 10
7
8 72 Masukkan item 14 ke dalam baldi 1 B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 0 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
8 6 n = 12
3 33
max = 81
4
jika 8 > 6 min = 6
5 45 50
YA pembahagi = 9
6
Tukar kedudukan nB = 10
7
8 72 Baldi 0 : 6 -> 8
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 1 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
12 10 14 n = 12
3 33
jika 12 > 10 YA Tukar kedudukan 10 12 max = 81
4
jika 12 > 14 min = 6
5 45 50
TIDAK pembahagi = 9
6
Kekal kedudukan nB = 10
7
8 72 Baldi 1 : 10 -> 12 -> 14
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 2 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
22 18 n = 12
3 33
max = 81
4
jika 22 > 18 min = 6
5 45 50
YA pembahagi = 9
6
Tukar kedudukan nB = 10
7
8 72 Baldi 2 : 18 -> 22
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 3 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
22 n = 12
3 33
max = 81
4
min = 6
5 45 50
pembahagi = 9
6
Kekal kedudukan nB = 10
7
8 72 Baldi 3 : 18
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 5 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
45 50 n = 12
3 33
max = 81
4
jika 45 > 50 min = 6
5 45 50
TIDAK pembahagi = 9
6
Kekal kedudukan nB = 10
7
8 72 Baldi 5 : 45 -> 50
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 8 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
72 n = 12
3 33
max = 81
4
min = 6
5 45 50
pembahagi = 9
6
Kekal kedudukan nB = 10
7
8 72 Baldi 8 : 72
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
SORT B [ 9 ]

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
B Item 22 45 12 8 10 6 72 81 33 18 50 14

0 8 6 Isih item mengikut kedudukan MENAIK baldi pertama


1 12 10 14
2 22 18
81 n = 12
3 33
max = 81
4
min = 6
5 45 50
pembahagi = 9
6
Kekal kedudukan nB = 10
7
8 72 Baldi 9 : 81
B [ j ] = arr [ i ]
9 81 j = list ( arr [ i ] / pembahagi )
ISIHAN BUCKET SORT

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
Item 22 45 12 8 10 6 72 81 33 18 50 14

Ked. Indeks 0 1 2 3 4 5 6 7 8 9 10 11
Item Isih 6 8 10 12 14 18 22 33 45 50 72 81
Bucket
Latihan Sort
Melukis Carta Alir

Berdasarkan pseudokod yang telah lengkap,


lukiskan sambungan carta alir yang diberi.

Anda mungkin juga menyukai