You are on page 1of 10

ALGORITMA DAN KOMPLEKSITAS

SORTING
NPM

: 43A87006100112

Nama : Mujan
Dosen : Heri Juhari, S.Kom

Soal:
Buatlah 200 data urutkan dengan system sort salah satu:
1. Metode squensial
2. Metode Bineri
3. Metode Radix
4. Metode Heap
5. Metode Merger

Buat Algoritma

Buat SnapShot

Buat Analisi Terhadap Kompleksitas

Kesimpulan

By: Mujan - 43A87006100112

Metode Radix
Pengertian dan Algoritma
Radix Sort merupakan algoritma pengurutan yang ajaib yang mana mengatur pengurutan
nilainya tanpa melakukan beberapa perbandingan pada data yang dimasukkan. Kata
radix bermakna harafiah posisi dalam angka [1]. Di mana sederhananya, dalam
representasi desimal, radix adalah digitnya. Dalam implementasinya, Radix Sort
merupakan algoritma pengurutan yang cepat, mudah, dan sangat efektif. Namun banyak
orang yang berpikir bahwa algoritma ini memiliki banyak batasan di mana untuk kasuskasus tertentu tidak dapat dilakukan dengan algoritma ini, seperti pengurutan bilangan
pecahan dan bilangan negatif,
Berdasarkan urutan pemrosesan radixnya, Radix Sort terbagi 2 macam, yaitu: LSD
(Least Significant Digit), di mana pemrosesan dimulai dari radix yang paling tidak
signifikan. dan MSD (Most Significant Digit), di mana pemrosesan dimulai dari radix
yang paling signifikan.
Proses dasar Radix Sort adalah mengkategorikan data-data menjadi subkumpulansubkumpulan data sesuai dengan nilai radix-nya, mengkonkatenasinya, kemudian
mengkategorikannya kembali berdasar nilai radix lainnya.

Implementasi dari algoritma tersebut dibuat dengan menggunakan bahasa Pascal, yang
direalisasikan dengan menggunakan queue sebagai representasi tiap kategori radix untuk
pengkategorian.
Array A adalah array input, dan array B adalah array A yang sudah terurut.

By: Mujan - 43A87006100112

Procedure RadixSort (A : TArray; var B : TArray; d : byte);


var
KatRadix : array [0..9] of Queue;
i, x, ctr : integer;
pembagi : longword;
begin
{--- mengkopi A ke B ---}
for i:=1 to n do
B[i] := A[i];
pembagi := 1;
for x:=1 to d do
begin
{--- inisialisasi KatRadix ---}
for i:=0 to 9 do
InitQueue (KatRadix[i]);
{--- dikategorikan ---}
for i:=1 to n do
i: Enqueue (KatRadix [(B[i] div pembagi) mod 10], B[i]);
B[i] := 0;
{--- dikonkat ---}
ctr := 0;
for i:=0 to 9 do
begin
while (NOT IsQueueEmpty (KatRadix[i])) do
begin
ctr := ctr + 1;
B[ctr]:=DeQueue (KatRadix [i]);
end;
end;
pembagi := pembagi * 10;
end;
end;

Snapshot
Berdasar dari soal di atas untuk mengurutkan 200 data maka saya ambil sebuah
kumpulan data bilangan bulat dengan jumlah digit 3.
1
Baca kiri- knn -bwh
No
1
2
3
4
5
6
7
8
9 10
1 234 435 345 678 890 456 424 321 245 764
2 223 445 332 225 367 980 221 232 243 534
3 237 112 141 554 553 224 667 890 708 234

By: Mujan - 43A87006100112

4 123
5 556
6 887
2 7 818
8 345
9 321
10 334
11 664
12 234
13 546
14 679
15 657
16 377
17 270
18 140
19 227
20 050

552
787
667
886
002
222
445
665
235
549
677
659
373
278
156
220
079

565
334
445
778
399
116
543
666
236
548
678
658
379
279
147
229
043

575
657
343
668
899
113
665
667
237
547
680
660
380
280
148
230
042

345
544
111
998
881
765
775
668
238
550
684
664
384
281
149
231
879

124
343
222
999
770
556
442
669
239
554
682
662
381
282
150
236
983

231
332
330
456
776
432
433
670
240
552
681
663
383
283
151
233
069

232
344
887
125
775
213
567
671
241
551
683
661
382
284
152
239
089

331
545
778
136
568
344
878
672
242
553
685
665
385
285
153
136
981

894
578
776
557
436
987
432
325
514
564
321
023
043
056
098
101
746

Tabel 1.
Pertama kali, data dibagi-bagi sesuai dengan digit terkanan:
Warna menunjukkan urutan proses dari setiap pindah baris (1-20), misal isi Tabel 1.
cel(1,1) 234 warna merah jambu merupakan urutan proses pertama di tabel 2.
Dilanjutkan sampai kolom ke 10. Lalu dilanjutkan baris kedua, ketiga dst. Angka 234 di
tahap ini dimasukkan ke kolom dengan no 4. Yang ke dua 235 masukkan ke kolom
dengan no 5. (lihat angka paling kanan, sesuaikan dengan kolomnya)
2
Kategori digit
1

isi

1
2
3
4
5
6
7
8
9
10

0
890
980
890
330
770
670
240
550
680
660

1
321
221
141
231
331
111
881
321
671
241

2
332
232
112
552
232
332
222
002
222
432

3
223
243
553
123
343
343
113
213
543
433

4
234
424
764
534
554
224
234
124
894
334

5
435
345
245
445
225
565
575
345
545
445

6
456
556
776
886
456
136
776
436
116
556

7
367
237
667
787
657
887
667
887
557
987

8
678
708
578
778
818
778
668
998
568
878

9
999
399
899
669
239
549
679
659
379
279

By: Mujan - 43A87006100112

11
12
13
14
15
16
17
18
19
20
21
22
23
24

380
270
280
140
150
220
230
050

551
681
321
661
381
281
151
231
101
981

442
432
672
242
552
682
662
382
282
152
042

553
683
663
023
373
383
043
283
153
233
043
983

544
344
344
334
664
234
514
554
564
684
664
384
284

125
345
775
765
445
665
775
665
325
235
685
665
385
285

666
236
546
056
156
236
136
746

567
667
237
547
677
657
377
147
227

668
238
548
678
658
278
148
098

149
229
239
079
879
069
089

Tabel 2
Hasil pengkategorian tersebut lalu digabung kembali dengan metode konkatenasi
menjadi:
890, 980, 890,050,
321, 221, 141,981,
..

Baca dari kolom 0 kebawah, kemudian dilanjutkan kolom 1 kebawah, kemudian kolom 2
dan seterusnya
Kemudian pengkategorian dilakukan kembali, namun kali ini berdasar digit kedua atau
digit tengah, dan jangan lupa bahwa urutan pada tiap sub kumpulan data harus sesuai
dengan urutan kemunculan pada kumpulan data.
2
1

isi

Kategori digit
0
1
2
3
4
5
6
7
8
9
1 101 111 220 330 240 550 660 770 980 890

By: Mujan - 43A87006100112

2 002 112 321 230 140 150 661 670 680


3 708 113 221 231 141 050 662 270 380
4
213 321 331 241 551 663 671 280
5
514 321 231 442 151 764 672 881
6
116 222 332 242 552 664 373 681
7
818 222 232 042 552 564 575 381
8
223 232 243 152 664 775 281
9
123 332 343 553 565 775 981
10
023 432 343 553 765 776 682
11
424 432 543 153 665 776 382
12
224 433 043 554 665 677 282
13
124 233 043 554 665 377 683
14
225 234 544 456 666 678 383
15
125 534 344 556 367 578 283
16
325 234 344 456 667 778 983
17
227 334 345 556 667 778 684
18
229 334 245 056 567 878 384
19
234 445 156 667 678 284
20
435 345 657 668 278 685
21
235 545 557 568 679 385
22
136 445 657 668 379 285
23
436 345 658 669 279 886
24
25
26
27
28
29
30
31
32

236
236
136
237
237
238
239
239

890
894
998
098
999
399
899

445 659 069 079 787


546
879 887
746
887
547
987
147
089
548
148
549
149

Tabel 3
Yang kemudian dikonkatenasi kembali kembali menjadi:
101,002,708
111,112,113,...818
dst

By: Mujan - 43A87006100112

Baca dari kolom 0 dari atas ke bawah, kemudian dilanjutkan kolom 1 dari atas ke bawah,
kemudian kolom 2 dan seterusnya
Kemudian langkah ketiga, atau langkah terakhir pada contoh ini adalah pengkategorian
kembali berdasar digit terkiri, atau yang paling signifikan.
2
1

isi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

0
002
023
042
043
043
050
056
069
079
089
098

1
101
111
112
113
116
123
124
125
136
136
140
141
147
148
149
150
151
152
153
156

2
213
220
221
222
222
223
224
225
227
229
230
231
231
232
232
233
234
234
234
235
236
236
237
237
238
239
239
240
241
242
243

Kategori digit
3
4
5
6
321 424 514 657
321 432 534 657
321 432 543 658
325 433 544 659
330 435 545 660
331 436 546 661
332 442 547 662
332 445 548 663
334 445 549 664
334 445 550 664
343 456 551 665
343 456 552 665
344
552 665
344
553 666
345
553 667
345
554 667
345
554 667
367
556 668
373
556 668
377
557 669
379
564 670
380
565 671
381
567 672
382
568 677
383
575 678
384
578 678
385
679
399
680
681
682
683

245

684

7
708
746
764
765
770
775
775
776
776
778
778
787

8
818
878
879
881
886
887
887
890
890
894
899

9
980
981
983
987
998
999

By: Mujan - 43A87006100112

33
34
35
36
37
38
39
40

270
278
279
280
281
282
283
284

41

285

685

Tabel 4.
Yang kemudian di konkatenasi lagi menjadi
002,023,042,..098
101,111,112156
Baca dari kolom 0 ke bawah, kemudian dilanjutkan kolom 1 kebawah, kemudian kolom
2 dan seterusnya (Pengurutan dari kecil ke besar /Ascending).

Kalau sebaliknya

(Descending) berarti di baca dari angka paling bawah di kolom 9 keatas, kemudian
kolom 8 dari baris paling bawah keatas dan seterusnya sampai kolom 0.
Kalau dibuat tabel hasil akhirnya sebagai berikut (ascending):
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

1
2
98
136
156
229
235
242
284
334
373
424
456
549
556

2
23
101
140
213
230
236
243
285
334
377
432
456
550
557

3
42
111
141
220
231
236
245
321
343
379
432
514
551
564

4
43
112
147
221
231
237
270
321
343
380
433
534
552
565

5
43
113
148
222
232
237
278
321
344
381
435
543
552
567

6
50
116
149
222
232
238
279
325
344
382
436
544
553
568

7
56
123
150
223
233
239
280
330
345
383
442
545
553
575

8
69
124
151
224
234
239
281
331
345
384
445
546
554
578

9
79
125
152
225
234
240
282
332
345
385
445
547
554
657

10
89
136
153
227
234
241
283
332
367
399
445
548
556
657

By: Mujan - 43A87006100112

15
16
17
18
19
20

658
665
672
685
778
890

659
666
677
708
778
890

660
667
678
746
787
894

661
667
678
764
818
899

662
667
679
765
878
980

663
668
680
770
879
981

664
668
681
775
881
983

664
669
682
775
886
987

665
670
683
776
887
998

665
671
684
776
887
999

Tabel 5.
Baca dari baris 1 (darri kiri ke kanan) sampai selesai kemudian baru dilanjutkan baris
dua dan seterusnya.
Yang merupakan hasil akhir dari metode pengurutan ini. Dimana data relah terurut
dengan metode radix sort.

Analisis dan Kesimpulan


Ada beberapa masalah untuk Radix Sort yang membuatnya kurang disukai dibandingkan
jenis sorting lainnya, seperti dalam hal mengurutkan bilangan bulat dan negatif.
Kecepatan Radix Sort sebagian besar bergantung pada operasi dasar, dan jika operasi
tidak cukup efisien, Radix Sort dapat lebih lambat dibandingkan dengan beberapa
algoritma lain seperti Quick Sort dan Merge Sort. Operasi ini termasuk memasukkan dan
menghapus fungsi sublists dan proses mengisolasi angka yang diinginkan.
Jika nomor tersebut bukan dari panjang yang sama, maka tes diperlukan untuk
memeriksa digit tambahan yang perlu menyortir. Hal ini dapat menjadi salah satu bagian
paling lambat Radix Sort, dan ini adalah salah satu yang paling sulit untuk membuat
efisien.

By: Mujan - 43A87006100112

Radix Sort juga dapat mengambil ruang lebih dari algoritma pengurutan lain, karena di
samping array yang akan diurutkan, Kita harus memiliki subdaftar untuk masing-masing
mungkin digit atau huruf. Jika Anda mengurutkan kata-kata bahasa Inggris murni, Anda
akan memerlukan paling sedikit 26 sublists berbeda, dan jika Anda mengurutkan katakata alfanumerik atau kalimat, Anda mungkin akan membutuhkan lebih dari 40 sublists.
Radix Sort tergantung pada angka atau huruf, Radix Sort juga lebih kurang fleksibel
dibandingkan jenis lainnya. Untuk setiap jenis data yang berbeda, Radix Sortir perlu
ditulis ulang, dan jika urutan perubahan penyortiran, menyortir perlu ditulis ulang lagi,.
Singkatnya, Radix Sort membutuhkan lebih banyak waktu untuk menulis dan sangat sulit
untuk menulis tujuan umum Radix Sort, yang dapat menangani semua jenis data.
Dengan kompleksitas yang beragam (panjang data, angka atau huruf, negatif dan
decimal data yang mau diurutkan) maka radix sort masih kurang efisien.

By: Mujan - 43A87006100112

You might also like