Sunday, October 2, 2016

Sorting Analisis Algoritma

Sorting

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 sorting
Kenapa 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 :

Sedangkan untuk algoritmannya sebagai berikut :

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

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 
 

1 comment:

  1. Penjelasannya sangat bagus…
    Kunjungi 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

    ReplyDelete