Selasa, 04 Oktober 2016

Sorting



SORTING

      Hallo semua, selamat datang di blog Anevery, perkenalkan nama saya Hadiyan. Oke Langsung aja.. Disini saya akan membahas mengenai sorting(pengurutan) data dalam algoritma.

      Sorting, apa sih sorting di dalam algoritma itu? Dalam Ilmu Komputer, Algoritma Sorting itu merupakan algoritma yang menempatkan elemen list pada urutan tertentu. Sorting yang efisien sangat dibutuhkan untuk mengoptimisasi penggunaan dari algoritma lain seperti pada algoritma searching(pencarian) dan penggabungan yang membutuhkan list terurut untuk berjalan dengan sempurna.

        Lebih sederhananya, Sorting adalah proses menyusun data dari data yang acak menjadi tersusun, baik disusun secara Ascending(Menaik) maupun secara Descending(menurun).
               
       Data yang akan di urutkan bisa berupa data yang bertipe dasar atau bisa juga data yang bertipe terstruktur(record). Jika datanya bertipe terstruktur maka harus dispesifikasikan berdasarkan field apa data tersebut akan diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai field kunci(key field).

      Adanya kebutuhan terhadap proses sorting memunculkan bermacam-macam algoritma sorting. Berikut ini beberapa algoritma sorting(pengurutan) yang sering ditemukan di litelatur-litelatur komputer, yaitu : 
  1.  Bubble Sort
  2.   Selection Sort(Maximum & Minimum Sort)
  3.  Insertion Sort
  4.  Heap Sort
  5.  Shell Sort
  6.  Quick Sort
  7. Merge Sort
  8.  Radix Sort
  9. Tree Sort   



      Saya akan membahas beberapa dari algoritma sorting di atas, diantaranya yaitu Bubble Sort, Selection Sort, dan Insertion sort. Berikut penjelasan singkat dari saya.

Bubble Sort

         Algoritma pengurutan menggunakan metode bubble sort ini diinspirasi oleh gelembung sabun yang ada di atas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat air, maka gelembung sabun akan terapung ke atas permukaan. Secara umum, benda-benda yang berat akan terbenam dan benda-benda yang ringan aka terapung ke atas permukaan. 

        Proses pengapungan dilakukan sebanyak n – 1 langkah, dimana n adalah ukuran larik/jumlah larik. Pada setiap langkah, akan ada larik yang diisolasi, artinya larik tersebut telah terurut sementara yang belum terurut akan dibandingkan kembali di tahap berikutnya. 
 
       Berikut ini contoh bentuk umum dari bubble sort secara ascending dalam bahasa pascal:

       Procedure BubbleSort(angka : Array of Integer; jumlah : Integer);
 Var
                i, j, temp : Integer;
       
 Begin
                For i := 1 To jumlah-1 do
                Begin
                 For j := jumlah downto i+1 do
                 Begin
                       If (angka[j] < angka[j-1]) Then
                       Begin
                               temp := angka[j];
                               angka[j] := angka[j-1];
                               angka[j-1] := temp;
                       End;
                 End;
                End;

        End.

Selection Sort

                Algoritma ini dinamakan Selection search karena gagasan dasarnya adalah memilih elemen maksimum/minimum dari larik, lalu menempatkannya pada awal atau akhir dari larik(elemen terujung). Selanjutnya elemen terujung akan di isolasi dan tidak disertakan pada proses selanjutnya. Sama seperti pada bubble sort, memilih elemen maximum/minimum dilakukan setiap tahap. Jika ukuran larik adalah n, maka akan ada n-1 tahap.

Ada dua varian dari selection sort yaitu, maximum sort dan minimum sort, yaitu:

1.  Maximum Sort
    Memilih data yang maksimum dari sekumpulan data larik, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan. Data maksimum  yang diperoleh akan diisolasi dan tidak diikutsertakan pada proses pencarian data maksimum berikutnya.

2.  Minimum Sort
    Memilih data yang minimum dari sekumpulan data larik, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan. Data minimum yang diperoleh akan diisolasi dan tidak diikutsertakan pada proses pencarian data minimum berikutnya.



      Berikut ini contoh bentuk umum dari Maximum selection sort secara ascending dalam bahasa pascal:


      Procedure MaxSort_Asc(angka : Array of Integer; jumlah : Integer);
Var
                i, j, temp,max,x : Integer;
       
Begin
        x := jumlah;
                For i := 1 To jumlah-1 do
                Begin
                 max := 1;
                 For j := 2 to x do
                 Begin
                       If (angka[j] > angka[max]) Then
                       Begin
                        max:=j;      
                       End;
                 End;
                 temp := angka[max];
                 angka[max] := angka[j];
                 angka[j] := temp;
                 x:=x-1;
               End;

        End.

                 

      Ada juga contoh bentuk umum dari Minimum selection sort secara ascending dalam bahasa pascal:
         

      Procedure MinSort_Asc(angka : Array of Integer; jumlah : Integer);
Var
                i, j, temp,min,x : Integer;
       
Begin
                For i := 1 To (jumlah-1) do
                Begin
                 min := i;
                 For j := i+1 to N do
                 Begin
                       If (angka[j] < angka[min]) Then
                       Begin
                        min:=j;      
                       End;
                 End;
                 temp := angka[min];
                 angka[min] := angka[i];
                 angka[i] := temp;
               End;

        End.


Insertion Sort



     Insertion sort adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Cara kerja algoritma ini adalah dengan mengambil elemen dari list tersebut  satu-per-satu dan memasukkannya di posisi yang benar.

 

Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

Metode ini cocok untuk persoalan menyisipkan elemen baru kedalam sekumpulan elemen yang sudah terurut.

Berikut ini contoh bentuk umum dari Insertion sort secara ascending dalam bahasa pascal:
 
 
Procedure InsertionSort(angka : Array of Integer; jumlah : Integer);
Var
        i, j, index : Integer;
 
 
Begin
        For i := 2 to jumlah-1 do
        Begin
               index := angka[i];
               j := i;
               While ((j > 1) AND (angka[j-1] > index)) do
               Begin
                       angka[j] := angka[j-1];
                       j := j - 1;
               End;
               angka[j] := index;
        End;
End.



Sekian dulu dari saya, terimakasih telah membaca, maaf bila masih banyak kekurangan atau ada salah-salah kata.


Sumber:


Rinaldi Munir. 2011.  Algoritma & Pemrograman Dalam Bahasa Pascal dan C. Bandung: INFORMATIKA.
Tati Harihayati. 2015. Modul Mata Kuliah Algoritma dan Pemrograman : Sorting (Power Point).

Tidak ada komentar:

Posting Komentar