Anda di halaman 1dari 48

ALGORITMA 2

Sorting
SORTING / PENGURUTAN
 Pengurutan data merupakan salah satu Permasalahan Umum
yang juga sering dijumpai dalam pemrograman.

 Banyak contoh kasus yang dapat kita lihat dalam kehidupan


sehari 2x : No contat di hp , List antrian RS , Mencatat alamat
teman berdasarkan nama dll, Data tampil secara terurut.

 Kuntungan : data yang sudah terurut mempercepat waktu


pencarian, Dari data yang sudah terurut kita langsung dapat
memperoleh nilai maksimum atau minimum ( jika itu yang di
perlukan ).

 Metode Sorting ???


 Bubble sort
 Selection sort
 Insertion sort
 Gravitation sort
PENGGUNAAN SORTING

 Pengurutan dalam struktur data .


baik data numerik ataupun
karakter.

Sorting Dilakukan Secara:


 Ascending (urut naik)
 Descending (urut turun)
Data Acak : 5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25 ; Amir Budi Badu Dudi
Descending : 25 10 8 6 5 3 1
SYARAT SORTING SECARA UMUM
 Bentuk:

 Ascending if N obyek disimpan


dalam larik L, then menyusun
elemen larik
L[1] ≤ L[2] ≤ L[3] ≤ …≤ L[N]
 Descending if N obyek disimpan
dalam larik L, then menyusun
elemen larik
L[1] ≥ L[2] ≥ L[3] ≥ … ≥ L[N]
BUBBLE SORT
Menurut sumber yang ada, metode ini diinspirasi
oleh adanya gelembung sabun yang mengapung di
atas permukaan air.

Hal ini tentunya disebabkan karena berat jenis


gelembung sabun lebih kecil dari berat jenis air.

Konsep dari fenomena tersebut kemudian


diterapkan sebagai metode pengurutan data di
dalam array.
ALGORITMA TRANSPOSISI
(BUBBLE SORT / PENGURUTAN GELEMBUNG)
 Metode sorting termudah
 Bubble Sort mengurutkan data dengan cara membandingkan
elemen sekarang dengan elemen berikutnya.
 Jika menginginkan larik terurut menaik maka larik yang bernilai
paling kecil diapungkan ( atau keujung kiri larik ) begitupun
sebaliknya.

 Ascending :
if elemen sekarang “ > ” dari elemen berikutnya then
kedua elemen ditukar
 Descending:
if elemen sekarang “ < “ dari elemen berikutnya then
kedua elemen ditukar
BUBBLE SORT
 Algoritma:
banyaknya data: n
Data diurutkan/disorting dari yang bernilai besar
Proses
step 1 :
Periksalah nilai dua elemen mulai dari urutan ke-n
sampai urutan ke-1. Jika nilai kiri<kanan, tukarkan
kedua data itu.
step 2 :
Periksalah nilai dua elemen mulai dari urutan ke-n
sampai urutan ke-2. Jika nilai kiri<kanan, tukarkan
kedua data itu.
step n-1 :
Periksalah nilai dua elemen mulai dari urutan ke-n
sampai urutan ke-n-1. Jika nilai kiri<kanan,
tukarkan kedua data itu.
ALGORITMA BUBBLESORT ASCENDING

Procedure bubblesort ( input/output L : larik_int , input : integer )

Deklarasi
i : integer
k : integer
temp : integer

Algoritma

For i 1 to n - 1 do
For k n to i + 1 do
if L [ k ] < L [ k – 1 ] then

{ pertukarkan L [ k ] dengan L [ k - 1]
temp L[K]
L[k] L[K–1]
L[k-1] temp
endif
endfor
endfor
ALGORITMA BUBBLESORT DESCENDING

Procedure bubblesort ( input/output L : larik_int , input : integer )

Deklarasi
i : integer
k : integer
temp : integer

Algoritma

For i 1 to n - 1 do
For k n to i + 1 do
if L [ k ] > L [ k – 1 ] then

{ pertukarkan L [ k ] dengan L [ k - 1]
temp L[K]
L[k] L[K–1]
L[k-1] temp
endif
endfor
endfor
BUBBLE SORT ASCENDING
BUBBLE SORT (4)
BUBBLE SORT (5)
BUBBLE SORT DESCENDING

Data Awal 7 4 5 8 10
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 7 4 5 8 10
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 7 4 5 10 8
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 7 4 10 5 8
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 7 10 4 5 8
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 7 8 4 5
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 8 7 4 5
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 8 7 4 5

Step-3 10 8 7 4 5
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 8 7 4 5

Step-3 10 8 7 5 4
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 8 7 4 5

Step-3 10 8 7 5 4
BUBBLE SORT: TAHAP DEMI TAHAP

Awal 7 4 5 8 10

Step-1 10 7 4 5 8

Step-2 10 8 7 4 5

Step-3 10 8 7 5 4

Step-4 10 8 7 5 4
PROGRAM BUUBLE SORT
POTONGAN PROGRAM
PENGURUTAN SELECTION SORT
(MAKSIMUM/MINIMUM)
Metode pengurutan ini disebut pengurutan maksimum / minimum karena
didasarkan pada pemilihan elemen maksimum atau minimum.

Kemudian mempertukarkan elemen maksimum/minimum tersebut dengan


elemen terujung larik (elemen ujung kiri atau elemen ujung kanan).
Selanjutnya elemen terujung itu kita “isolasi” dan tidak diikut sertakan pada
proses selanjutnya.

Karena proses utama dalam pengurutan adalah pemilihan elemen maksimum /


minimum, maka metode ini disebut metode pemilihan (selection sort).
ALGORITMA PENGURUTAN MAKSIMUM
(NAIK /ASCENDING)

Langkah 1: Tentukan Harga Maksimum didalam L1[1..N]


Pertukarkan harga maksimum dng L[N]
Langkah 2: Tentukan Harga Maksimum didalam L1[1..N-1]
Pertukarkan harga maksimum dng L[N-1]
Langkah 3: Tentukan Harga Maksimum didalam L1[1..N-2]
Pertukarkan harga maksimum dng L[N-2]
……..
Langkah N-1: Tentukan Harga Maksimum didalam L1[1..2]
Pertukarkan harga maksimum dng L[2].
CONTOH : TINJAU LARIK DENGAN N=6 BUAH
ELEMEN DIBAWAH INI YANG BELUM TERURUT
MENJADI DIURUT NAIK.

29 27 10 8 76 21
1 2 3 4 5 6

Langkah 1:
Cari elemen maksimum di dalam larik
L[1..6] maks = L[5] = 76
Tukar maks dengan L[N],hasil akhir langkah
1:

29 27 10 8 21 76
1 2 3 4 5 6
Langkah 2:
(berdasarkan susunan larik hasil langkah 1)
Cari elemen maksimum di dalam larik L[1..5]
maks = L[1] = 29
Tukar maks dengan L[5],hasil akhir langkah 2:
29 27 10 8 21 76
1 2 3 4 5 6
21 27 10 8 29 76
1 2 3 4 5 6
Langkah 3:
(berdasarkan susunan larik hasil langkah 2)
Cari elemen maksimum di dalam larik L[1..4]
maks = L[2] = 27
Tukar maks dengan L[4],hasil akhir langkah 3:
21 27 10 8 29 76
1 2 3 4 5 6
21 8 10 27 29 76
1 2 3 4 5 6
Langkah 4:
(berdasarkan susunan larik hasil langkah 3)
Cari elemen maksimum di dalam larik L[1..3]
maks = L[1] = 21
Tukar maks dengan L[3],hasil akhir langkah 4:
21 8 10 27 29 76
1 2 3 4 5 6
10 8 21 27 29 76
Langkah 5: 1 2 3 4 5 6
(berdasarkan susunan larik hasil langkah 4)
Cari elemen maksimum di dalam larik L[1..2]
maks = L[1] = 10
Tukar maks dengan L[2],hasil akhir langkah 5:
10 8 21 27 29 76
1 2 3 4 5 6
8 10 21 27 29 76
1 2 3 4 5 6
Selesai. Larik sudah terurutkan !
SELECTION MAX ASCENDING
Algoritma
for i n downto 2 do
max 1

for j 2 to i do
if L [ j ] > L [ max ] then
max j
endif
endfor

Temp := L [ i ]
L[ i ] := L [ max ]
L[ max ] := temp
Untuk algoritma Pengurutan
Minimum caranya sama persis
dengan maksimum hanya saja yang
ditukar adalah nilai yang minimum
bukan maksimum.
KESIMPULAN :
dibandingkan dengan pengurutan gelembung
(bubble sort) pengurutan dengan metode
selection sort (maksimum/minimum) ini memiliki
kinerja yang lebih baik. Operasinya pertukaran
hanya sekali saja dilakukan pada setiap langkah
sehingga waktu pengurutan dapat lebih ditekan.
Metode ini direkomendasikan untuk dipakai.
INSERTION SORT
PENGURUTAN SISIP (INSERTION SORT)

Dari namanya, pengurutan sisip (insertion sort)


adalah metode pengurutan dengan cara
menyisipkan elemen larik pada posisi yang tepat.
Pencarian posisi yang tepat dilakukan dengan
pencarian beruntun. Selama pencarian posisi
yang tepat dilakukan pergeseran elemen larik.
ALGORITMA PENGURUTAN SISIP
(NAIK /ASCENDING)
Andaikan : L[1] dianggap sudah tempatnya.
Langkah 2: L[2] harus dicari tempatnya yang tepat pada L[1..2] denga cara menggeser
elemen L[1] ke kanan bila L[1] lebih besar dari L[2]. Misalkan posisi elemen
yang tepat adalah K sisipkan L[2] pada K.
Langkah 3: L[3] harus dicari tempatnya yang tepat pada L[1..3] dengan cara
menggeser elemen L[1..2] ke kanan bila L[1..2 lebih besar dari L[3].
Misalkan posisi elemen yang tepat adalah K sisipkan L[3] pada K.
Langkah 4: L[4] harus dicari tempatnya yang tepat pada L[1..4]
dengan cara menggeser elemen L[1..4] ke kanan bila
L[1..4] lebih besar dari L[4]. Misalkan posisi elemen yang
tepat adalah K sisipkan L[4] pada K.
Langkah N: L[N] harus dicari tempatnya yang tepat pada L[1..N] dengan
cara menggeser elemen L[1..N ke kanan bila L[1..N] lebih
besar dari L[N]. Misalkan posisi elemen yang tepat adalah K
sisipkan L[N] pada K.
Contoh : Tinjau larik dengan N=6 buah elemen dibawah ini
yang belum terurut menjadi diurut naik.

29 27 10 8 76 21
1 2 3 4 5 6
Langkah 1:
Elemen L[1] dianggap sudah terurut

29 27 10 8 76 21
1 2 3 4 5 6

Langkah 2:
(berdasarkan susunan larik pada langkah 1)
Cari posisi yang tepat untuk L[2] pada
L[1..2],diperoleh :
29 27 10 8 76 21
1 2 3 4 5 6
Langkah 3:
(berdasarkan susunan larik pada langkah 2)
Cari posisi yang tepat untuk L[3] pada
L[1..3],diperoleh :

10 27 29 8 76 21
1 2 3 4 5 6

Langkah 4:
(berdasarkan susunan larik pada langkah 3)
Cari posisi yang tepat untuk L[4] pada
L[1..4],diperoleh :

8 10 27 29 76 21
1 2 3 4 5 6
Langkah 5:
(berdasarkan susunan larik pada langkah 4)
Cari posisi yang tepat untuk L[5] pada
L[1..5],diperoleh :

8 10 27 29 76 21
1 2 3 4 5 6

Langkah 6:
(berdasarkan susunan larik pada langkah 5)
Cari posisi yang tepat untuk L[6] pad
L[1..6],diperoleh :

8 10 21 27 29 76
1 2 3 4 5 6
Selesai. Larik sudah terurutkan !
PESUDOCODE
DATA : 6 9 7 3 2 4 (N = 6)
OUTPUT :
KESIMPULAN :
Kelemahan metode sisip terletak pada
banyaknya operasi yang diperlukan dalam
mencari posisi yang tepat untuk elemen larik.
Untuk larik yang jumlahnya besar ini tidak
praktis. Dari ketiga metode tersebut, pengurutan
maksimum/minimum memiliki kinerja yang
terbaik.
TUGAS SORT

Buatlah masing-masing
program pengurutan
Nama dan NPM :
Bubble sort ;
Selection sort ;
Insertion sort ;

Anda mungkin juga menyukai