Pengertian sorting
Sorting yang artinya penyortiran atau memilih - milih . Dan dalam algoritma sorting merupakan sebuah metode pengurutan data, atau penyusunan elemen - elemen dengan tata urut tertentu,sehingga data bisa tertata dengan rapih sesuai urutan yang di tentukan .
Sorting memiliki 2 dasar pengurutan :
- Mengurutkan data dari yang terkecil sampai yang terbesar (Ascending)
Contoh : Alfabet (A-Z) ,number (0-10). - Mengurutkan data dari yang terbesar sampai yang terkecil (Descending)
Contoh : Alfabet (Z-A) ,number (10-0).
Manfaat sortingKenapa sorting digunakan dalam algoritma pemograman?
Sorting bertujuan untuk memudahkan dalam menghasilkan informasi dari sebuah data, berdasarkan kategori atau label.Sehingga pencarian data menjadi lebih cepat dan tepat .
Banyak metode untuk melakukan sorting diantaranya sebagai berikut :
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Shell Sort
- Quick Sort
Bubble Sort(Metode Gelembung)
Bubble Sort atau di sebut juga Metode Gelembung dalam bahasa indonesia adalah metode pengurutan dengan proses pengurutan seperti gelembung.Seperti yang kita ketahui bahwa dari banyak gelembung udara yang muncul di dasar laut,gelembung yang paling besar selalu lebih cepat naik kepermukaan dibandingkan dengan gelembung udara yang kecil sehingga terlihat mereka bertukar posisi .
Seperti gambar di atas, terlihat bahwa gelembung yang lebih besar berpindah posisi dengan gelembung yang lebih kecil.Dengan demikian juga metode bubble sort, kita akan membandingkan 2 buah data dan menukar posisi data tersebut jika nilai data di kiri lebih besar dibandingkan dengan di kanan.
Ilustrasi pada gambar di bawah ini :
program metode_gelembung
kamus
data: array [1..100] of integer
n,i,j,z : integer
Algoritma
write('Masukkan Jumlah Data : ')read(n)
for i<-- 1 to n do
write('Masukan Data Ke ',i,' : ') read(data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<--1 to n do
write(data[i])
endfor
for i<-- 1 to n-1 do
for j<-- n downto i+1 do
if data[j] < data[j-1] then
z<-- data[j]
data[j]<-- data[j-1]
data[j-1]<--z
endfor
endfor
write('data setelah diurutkan : ')
for i<--1 to n do
write (data[i])
endfor
Selection Sort(Metode seleksi)
Sesuai artinya Selection Sort adalah metode pengurutan dengan cara menseleksi tapi jika kalian mengetahui sebenarnya Selection Sort adalah gabungan/kombinasi antara searching dan sorting .Ingin tau kenapa ?
Karna pada proses Selection Sort terdapat proses mencari data dari terkecil ke terbesar mau pun sebaliknya,yaitu data dari posisi pertama hingga akhir dan di cari nilai data terkecil sampai yang terbesar ,setelah di ketahui nilai data terkecil maka data dengan nilai terkecil tersebut akan di tempatkan pada posisi pertama,lalu di cari lagi nilai terkecil ke dua untuk di tempat kan di posisi ke dua pula , dan begitu pun seterusnya hingga data terakhir yaitu nilai data terbesar .
Ilustrasi pada gambar di bawah ini :
Sedangkan untuk algoritmannya sebagai berikut :
program metode_seleksi
kamus
data:array[1..10] of integer
i,j,n,result:integer
algoritma
write('Masukan Jumlah Data : ')read(n)
for i <-- 1 to n do
write ('Masukan Data Ke ',i,' : ')read (data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
for i <-- 1 to n do
for j <-- i to n do
if data[j] < data[i] then
result <-- data[j]
data[j] <-- data[i]
data[i] <-- result
endif
endfor
endfor
write('Data Setelah Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
program metode_seleksi
kamus
data:array[1..10] of integer
i,j,n,result:integer
algoritma
write('Masukan Jumlah Data : ')read(n)
for i <-- 1 to n do
write ('Masukan Data Ke ',i,' : ')read (data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
for i <-- 1 to n do
for j <-- i to n do
if data[j] < data[i] then
result <-- data[j]
data[j] <-- data[i]
data[i] <-- result
endif
endfor
endfor
write('Data Setelah Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
Insertion Sort (Metode Penyisipan Langsung)
Insertion Sort adalah sebuah metode sorting dimana proses pengurutan data seperti kita merapihkan urutan kartu berangka,Saat kita melihat sekumpulan kartu di tangan kiri maka tangan kanan kita akan mengurutkan kartu tersebut dengan cara menyisipkan kartu pada posisi yang semestinya .
Ilustrasi pada gambar di bawah ini :
Sedangkan untuk algoritmannya sebagai berikut :
program metode_penyisipan_langsung
kamus
data : array [1..10] of integer
i,j,n,z :integer
algoritma
write('Masukan Jumlah Data : ')read(n)
for i<--1 to n do
write('Masukan Data Ke ',i,' : ')read(data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<--1 to n do
write(data[i],' ')
endfor
for i<--2 to n do
z <-data[i]
j <--i-1
while (data[j] > z) and (j>0) do
data[j+1] <- data[j]
j<--j-1
data[j+1]<--z
endfor
write('Data Setelah Diurutkan : ')
for i<-1 to n do
write(data[i],' ')
endfor
Merge Sort(Metode Penggabungan)
Merge Sort Adalah Sebuah Metode Penggabungan dalam algoritma pengurutan. Merge Sort memiliki proses berdasarkan strategi divine dan conquer .yaitu data akan di bagi menjadi beberapa bagian yang terdiri dari list dan kemudian di bagi lagi menjadi sublist-sublist .
Logikanya pada Merge Sort ini sekumpulan data akan di kelompokkan menjadi dua bagian ,lalu dua bagian tersebut di kelompokan lagi menjadi bagian-bagian kelompok terkecil .Setelah itu baru lah dilakukan proses penggabunggan dengan membandingkan nilai terkecil dan terbesar pada tiap-tiap data.
Ilustrasi pada gambar di bawah ini :
Sedangkan untuk algoritmannya sebagai berikut :
Shell Sort
Seperti namanya Metode Shell Sort merupakan algoritma pengurutan yang pertama kali di kembangkan oleh Donald L.shell pada tahun 1959, Maka di sebut Shell Sort Seperti nama orang yang mengembangkannya .Metode Shell Sort memiliki proses pengurutan mirip Insertion Sort hanya saja pada Shell Sort data yang bertukar atau berpindah posisi akan di tentukan oleh jarak posisi data tersebut .Cara menghitung jarak untuk menentukan pertukaran data di sebut increment value atau sequence number .
Sedangkan untuk algoritmannya sebagai berikut :
procedure p_shell ( input ping : larik, N : Integer )
KAMUS
i, j, step, tmp : integer
ALGORITMA
step ← N div 2;
while step>0 do
for i ← step to N do
tmp ← ping[i]
j ← i
while (j>=step) and (ping[j-step]>tmp) do
ping[j] ← ping[j-step]
dec(j,step)
endwhile
ping[j] ← tmp
endfor
step ← step div 2
endwhile
program metode_shell
type
larik = array[1..100] of integer
KAMUS
data : larik;
i, n : integer;
Procedure p_shell ( input ping : larik, N : integer )
ALGORITMA
write(n)
read(n)
write('Data Sebelum Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
for i ← 1 to n do
write(i)
read(data[i])
endfor
p_shell(data,n)
write('Data Setelah Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
Quick Sort
Quick Sort adalah Metode pengurutan dengan cara memecah data menjadi partisi-partisi dan di proses secara rekursif ,maka dari itu Metode Quick Sort menjadi pengurutan tercepat sampai saat ini untuk kasus pengurutan yang umum.Namun berbeda dengan kasus khusus karna tiap algoritma memiliki kelebihan dan kekurangannya masing-masing .
Sedangkan untuk algoritmannya sebagai berikut :
procedure swap(output d,b:integer)
kamus
t:integer
algoritma
t<--d
d<--b
b<--t
procedure m_quick(output buzz:ping U,D:integer)
procedure sett
kamus
{tidak ada kamus}
I<-- U + 1
J<-- D
while buzz[I] < buzz[U] do
I<--I+1
endwhile
while buzz[j] > buzz[U] do
J<--J-1
endwhile
while I < J do
swap (buzz[I],buzz[J])
while buzz[I] < buzz[U] do
I<--I+1
endwhile
while buzz[J] > buzz[U] do
J<--J-1
endwhile
endwhile
swap (buzz[U], buzz[J] )
kamus
i,j:integer
procedure sett
procedure m_quick(output buzz:ping U,D:integer)
algoritma
if U < D then
sett
m_quick (buzz,U,J-1)
m_quick (buzz,J+1,D)
program metode_quick
type
ping = array[1..10] of integer
kamus
data:ping
i,n:integer
procedure swap(output d,b:integer)
procedure m_quick(output buzz:ping,input U,D:integer)
algoritma
write('Masukan Jumlah Data : ')read(n)
for i <-- 1 to n do
write ('Masukan Data Ke ',i,' : ')read(data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
m_quick(data,1,n)
write('Data Sesudah Diurutkan : ')
for i<--1 to n do
write(' ',data[i])
endfor
Referensi
Metode Sorting
SORTING (STRUKTUR DATA)
Macam-macam Sorting
Sedangkan untuk algoritmannya sebagai berikut :
procedure swap(output d,b:integer)
kamus
t:integer
algoritma
t<--d
d<--b
b<--t
procedure m_quick(output buzz:ping U,D:integer)
procedure sett
kamus
{tidak ada kamus}
I<-- U + 1
J<-- D
while buzz[I] < buzz[U] do
I<--I+1
endwhile
while buzz[j] > buzz[U] do
J<--J-1
endwhile
while I < J do
swap (buzz[I],buzz[J])
while buzz[I] < buzz[U] do
I<--I+1
endwhile
while buzz[J] > buzz[U] do
J<--J-1
endwhile
endwhile
swap (buzz[U], buzz[J] )
kamus
i,j:integer
procedure sett
procedure m_quick(output buzz:ping U,D:integer)
algoritma
if U < D then
sett
m_quick (buzz,U,J-1)
m_quick (buzz,J+1,D)
program metode_quick
type
ping = array[1..10] of integer
kamus
data:ping
i,n:integer
procedure swap(output d,b:integer)
procedure m_quick(output buzz:ping,input U,D:integer)
algoritma
write('Masukan Jumlah Data : ')read(n)
for i <-- 1 to n do
write ('Masukan Data Ke ',i,' : ')read(data[i])
endfor
write('Data Sebelum Diurutkan : ')
for i<-- 1 to n do
write(' ',data[i])
endfor
m_quick(data,1,n)
write('Data Sesudah Diurutkan : ')
for i<--1 to n do
write(' ',data[i])
endfor
Referensi
Metode Sorting
SORTING (STRUKTUR DATA)
Macam-macam Sorting
Penjelasannya sangat bagus…
ReplyDeleteKunjungi blog saya juga membahas materi dibawah ini beserta kodingnya baik Java, PHP maupun C dan C++
• Merge sort
CLICK ME
• Selection sort
CLICK ME
• Insertion sort
CLICK ME
• Quick Sort
CLICK ME