Showing posts with label struktur data. Show all posts
Showing posts with label struktur data. Show all posts

Friday, July 7, 2017

Kupas Tuntas Algoritma Pengurutan (sorting)


Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Pengurutan dikatakan stabil jika dua atau lebih data yang sama (atau identik) tetap pada urutan yang sama setelah pengurutan.
Pengurutan dapat dilakukan secara ascending (urutan naik) dan descending (urutan turun). Pengurutan (sorting)  merupakan proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu.
Contoh :
Data acak     : 5 6 8 1 3 25 10
Ascending     : 1 3 5 6 8 10 25
Descending   : 25 10 8 6 5 3 1

Ada beberapa algoritma pengurutan dalam berbagai literatur komputer, yang akan dibahas antara lain :
  1. Metode pengurutan apung (Bubble Sort)
  2. Metode pengurutan seleksi (Selection Sort)
  3. Metode pengurutan sisip (Insertion Sort)
  4. Metode pengurutan Shell (Shell Sort)
Dua Algoritma pertama melakukan prinsip pertukaran elemen dalam proses pengurutan. Sedangkan dua algoritma terakhir melakukan prinsip geser dan sisip elemen dalam proses pengurutan.
Algoritma pengurutan dapat diklasifikasikan menjadi :
  • Algoritma pengurutan internal, yaitu algoritma pengurutan untuk data yang disimpan didalam memori komputer.
  • Algoritma pengurutan eksternal, yaitu metode pengurutan untuk data yang disimpan didalam disk storage, disebut juga pengurutan arsip.

Kupas Tuntas Algoritma Pengurutan Apung (Bubble Sort)

Algoritma pengurutan Apung (bubble sort) diinspirasi oleh gelembung sabun yang berada diatas permukaan air. Untuk mendapatkan data larik yang terurut menaik, loka dari algoritma pengurutan apung secara global sebagai berikut:

Untuk setiap pass i = 1, 2, … , n-1, lakukan :
mulai dari elemen k = n, n-1, …, i+1, lakukan :

     - Bandingkan L[k] dengan L[k-1]
     - Pertukarkan L[k] dengan L[k-1] jika L[k] < L[k-1]Logika Rincian setiap pass sebagai berikut:
  • Pass 1    : mulai dari elemen ke-k = n,n-1,…,2, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[1] berisi harga minimum pertama
  • Pass 2    : mulai dari elemen ke-k = n,n-1,…,3, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[2] berisi harga minimum kedua.
  • Pass 3    : mulai dari elemen ke-k = n,n-1,…,4, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[3] berisi harga minimum ketiga
lakukan sampai ke

  • .Pass n-1: mulai dari elemen ke-k = n, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k]     dengan L[k-1], pada akhir pass n-1, elemen L[n-1] berisi nilai minimum ke (n-1) dan larik L[1..n-1]     terurut menaik.
Algortimanya pengurutan apung/bubblesort dari kecil ke besar(ascending) bisa dituliskan sebagai berikut :


    procedure bubblesort1(input/output L: larikint, input n : integer)
    DEKLARASI
        i : integer
        k : integer
        temp : integer
    ALGORITMA
        for  i = 1 to n - 1 do
            for k =  n downto I + 1  do
                 if L[k] < L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1] = temp
                 endif
            endfor
        endfor


Algortimanya pengurutan apung/bubblesort dari besar ke kecil(descending) bisa dituliskan sebagai berikut :

    procedure bubblesort2(input/output L:larikint, input n:integer)
    DEKLARASI
        I : integer
        k : integer
        temp : integer
    ALGORITMA
        for  I = 1 to n - 1 do
            for k = n downto I + 1  do
                 if L[k] > L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1]= temp
                 endif
            endfor
        endfor


Untuk lebih mudah bisa diilustrasikan sebagai berikut :
klik 2x untuk memperbesar gambar
Pada gambar diatas pengecekan mulai dari data yang paling akhir, kemudian dibandingkan dengan data yang didepannya. Jika data didepannya lebih besar maka akan tukar tempat.

klik 2x untuk memperbesar gambar
 Pada proses kedua, proses dilakukan sampai data yang ke dua,  karena data pertama pasti sudah yang paling kecil yang merupakan hasil dari proses pertama.

klik 2x untuk memperbesar gambar

klik 2x untuk memperbesar gambar


Mudah-mudahan bisa dipahami.