SlideShare a Scribd company logo
1 of 12
Download to read offline
ANALISIS ALGORITMA PADA MASALAH SORTING

Oleh Dea Rokhmatun Iradewa (0700940)
     Program Ilmu Komputer UPI


Dalam ilmu komputer, yang dimaksud dengan algoritma pengurutan pada dasarnya
adalah :
   • algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan
      tertentu.
   • Proses pengurutan data          yg sebelumnya disusun         secara    acak    sehingga
      menjadi tersusun secara teratur menurut suatu aturan tertentu. Yang pada
      kenyataannya ‘urutan tertentu’ yang umum digunakan adalah terurut secara
      numerikal ataupun secara leksikografi (urutan secara alfabetis).
   • Ada 2 jenis pengurutan, yaitu Ascending (naik) & Descending (turun)


1. Buble Sort
            Bubble sort atau yang disebut juga metode pengurutan apung adalah salah
    satu metode pengurutan yang bersifat langsung dan termasuk jenis pengurutan
    yang paling sederhana. Metode ini terinspirasi oleh gelembung sabun di air dimana
    delembung sabun yang lebih ringan dari air akan selalu naik ke permukaan. Nama
    bubble sort sendiri berasal dari sifat nilai terbesar yang selalu naik (ke akhir dari list)
    seperti gelembung sabun (bubble).
    Konsep dari bubble sort adalah sebagai berikut :
       o Pengecekan dimulai dari elemen paling awal
       o Elemen ke-1 dan ke-2 dari list dibandingkan
       o Jika elemen pertama lebih besar dari elemen kedua, dilakukan pertukaran.
       o Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga,
           seterusnya sampai elemen
o terakhir.
   o Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal
      sampai tidak ada terjadi
   o lagi pertukaran elemen.
   o Bila tidak ada pertukaran elemen lagi, maka elemen list terurut.


        Salah satu kelebihan algoritma bubble sort, terjadi saat semua elemen
sudah terurut di mana hanya terjadi pengecekan pada setiap elemen, sehingga
penelusuran hanya dilakukan satu kali saja. Ini merupakan kasus terbaik yang
mungkin terjadi pada algoritma ini.
        Kelebihan lain dari algoritma ini adalah dapat dieksekusi dan dijalankan
dengan cukup cepat. Keadaan terbaik terjadi bila data yang hendak disorting sudah
terurut, Berapapun jumlah elemen datanya, jika data ya sudah terurut, maka Bubble
Sort tersebut hanya melewatinya satu kali yaitu O(1500).
        Namun jika keadaan datanya belum terurut sama sekali, makadengan
jumlah data 20 saja, pada perbandingan yang dilakukan = O(202) = O(4000) -> Lebih
besar dibanding 1500 data pada kondisi terurut
        Oleh karena itu, metode pengurutan apung atau buble sort bukan
merupakan metode pengurutan yang efisien. Hal ini disebabkan oleh banyaknya
kemungkinan pertukaran yang terjadi pada proses pengapungan (baca: pengurutan)
data. Untuk jumlah data yang banyak, maka algoritma ini akan mebutuhkan waktu
yang lama. Namun kelebihan dari algoritma ini adalah kesederhanaan dan pola nya
yang mudah dipahami.
Efisiensi buble sort


       Berdasarkan tabel, tidak ada perbedaan performansi secara signifikan untuk
pengurutan   terhadap   100      item atau kurang. Namun, bubble      sort tidak
disarankan untuk pengurutan yang        terus berulang,    atau pengurutan yang
menangani lebih dari 200 item.
       Pola Pengurutan Dengan Buble Sort :
o Data awal yang belum terurut :


o Penentuan bilangan yang akan menjadi acun (bilangan 26)
o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan dan
   elemen kiri sebagai bilangan terakhir dari kumpulan bilangan




o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari
   elemen tumpuan tersebut. Geser elemen kanan ke arah kiri sampai ditemukan
   nilai dari elemen yang tidak lebih besar dari elemen tersebut.
o Ulangi




    o Tukar elemen tumpuan dengan elemen kiri




    o Urutkan sub bagian yang terhalang oleh tumpuan




2. Insertion Sort
               Insertion Sort adalah sebuah algoritma pengurutan sederhana, dengan
   cara pengurutan perbandingan yang mengurutkan suatu array atau list dengan
   membuat suatu entry.
               Metode ini tidak begitu mangkus dalam mengolah data yang besar
   (banyak) dibandingkan algoritma-algoritma yang lebih maju seperti Quicksort, tetapi
   mempunyai banyak keuntungan, diantaranya :
   1. Sederhana dalam penerapan
   2. Mangkus dalam pengolahan data yang kecil
   3. Mangkus dalam data yang sudah sebagian terurut
   4. Lebih mangkus dibanding Bubble Sort maupun Selection Sort
   5. Stabil
Algoritma insertion sort dalam bahasa C :


Void insertion_sort(apvector <int> &array) {
    int i,j,key,array_length=array.length();
    for(j=1;j<array_length;j++) {
           key=array[j];
           for(i=j;(i>=0)&&(array[i]<key);i--) {
                  aray[i+1]=array[i];
           }
           array[i+1]=key;
    }
    return;
}


          Keadaan terbaik didapat ketika list sudah dalam keadaan terurut, maka
pengurutan ini hanya memakanwaktu O(n): dalam setiap iterasi, elemen pertama
list hanya dibandingkan dengan elemen terakhir dari list.
          Salah satu kelebihan metode ini adalah Jika list sudah terurut atau
sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan
Quicksort.
          Keadaan terburuk dari algoritma ini adalah jika list terurut terbalik
sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh
bagian sebelum menyisipkan elemen berikutnya.
          Insertion Sort membutuhkan waktu O(n2) pada data yang tidak terurut,
sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar. Walaupun
demikian, loop dalam pada Inserion Sort sangat cepat, yang membuatnya salah satu
algoritma pengurutan tercepat pada jumlah elemen yang sedikit. Sama halnya
dengan buble sort, metode ini tidak mangkus (efektip) jika jumlah elemen data yang
akan diurutkan banyak
          Contoh proses pengurutan bilangan 84,69,76,86,94,91 den
                                                              dengan algoritma
insertion sort
3. Selection Sort
              Layaknya insertion sort, algoritma ini sangat simple dan mudah untuk
   diimplementasikan. Ide utama dari algoritma selection sort adalah memilih elemen
   dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i.
   Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
              Contoh algoritma selection sort:


      void selectionSort(Object array[], int startIdx, int endIdx) {
          int min;
          for (int i = startIdx; i < endIdx; i++) {
               min = i;
               for (int j = i + 1; j < endIdx; j++) {
                     if (((Comparable)array[min]).compareTo(array[j])>0) {
                          min = j;
                     }
               }
          swap(array[min], array[i]);
          }
      }


              Untuk memilih elemen terkecil memerlukan pemindaian seluruh (n)
   elemen yang membutuhkan n-1 kali perbandingan lalu memindahkannya ke posisi
   pertama. Sedang untuk memilih elemen kedua terkecil memerlukan pemindaian
   dari n-1 elemen dan begitu seterusnya sehingga (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2=
   O(n 2) perbandingan. Tiap perbandingan memerlukan satu kali pertukaran untuk n-1
   elemen. Karena itu perbandingan mendominasi waktu pemrosesan yaitu O(n2).
4. Merge Sort
               Merge Sort adalah suatu algoritma pengurutan berbasis perbandingan.
   Algiritma ini merupakan salah satu contoh algoritma pembagian. Algoritma ini
   ditemukan oleh John von Neumann pada tahun 1945. Algoritma ini menggunakan
   konsep rekursip.       Beberapa konsep yang harus dipahami sbelum menelusuri
   algoritma Merge sort:
   o Divide        Memilah masalah menjadi sub masalah
   o Conquer           Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah
        tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara
        langsung akan lebih efektif
   o       Kombinasi       Mengkombinasikan solusi dari sub-masalah, yang akan
        membimbing menuju penyelesaian atas permasalahan utama


        Berikut
        menjelaskan langkah kerja dari Merge sort.
       o Divide
            Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
       o    Conquer
            Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
       o    Kombinasi
            Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan
            rangkaian data berurutan
                  Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi
        bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa
        pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah
        terurut sesuai rangkaian.
                  Berikut algoritma pengurutan dengan merge sort:
void mergesort(int numbers[],int temp[],int array_size)
{
         m_sort(numbers,temp,0,array_size-1);
}

    void m_sort(int numbers[],int temp[],int left,int right)
{
         int mid;
         if(right > left)
         {
                  mid=(right+left)/2;
                  m_sort(numbers,temp,left,mid);
                  m_sort(numbers,temp,mid+1,right);
                  merge(numbers,temp,left,mid+1,right);
         }
}

    void merge(int numbers[],int temp[],int left,int mid,int right)
{
         int i,left_end,num_element,tmp_pos;
         left_end=mid-1;
         tmp_pos=left;
         num_elements=right-left+1;
         while((left<=left_end)&&(mid<=right))
         {
                   if numbers[left]<=numbers[mid]
                   {
                           temp[tmp_pos]=numbers[left];
                           tmp_pos=tmp_pos+1;
                           left=left+1;
                   }
                   else
                   {
                           temp[tmp_pos]=numbers[mid];
                           tmp_pos=tmp_pos+1;
                           mid=mid+1;
                   }
         }
         while (left<=left_end)
         {
                   temp[tmp_pos]=numbers[left];
                   left=left+1;
                   tmp_pos=tmp_pos+1;
         }
while (mid<=right)
      {
              temp[tmp_pos]=number[mid];
              mid=mid+1;
              tmp_pos=tmp_pos+1;
      }
      for(i=0;i<=num_elements;i++)
      {
              numbers[right]=temp[right];
              right=right-1;
      }
}




5. Quick sort
    Algoritma Quick sort :


    array [1..10] of integer x <- { 34,67,23,28,98)
    procedure quicksort(input : integer l,integer r)
       integer i
       integer j
       i <- l
       j <- r
       repeat
             while x(i) < x(l) do
                 i <- i+1
             {end while}
             while x(j) > x(l) do
                 j <- j-1
             {end while}
             if i<j then
                 integer temp
                 temp <- x(i)
                 x(i) <- x(j)
                 x(j) <- temp
                 i <- i+1
                 j <- j-1
             {end if}
until (i>j)
  if l<j then
        quicksort(l,j)
  {end if}
  if i<r then
        quicksort(i,r);
  {end if}


        Sesuai dengan namanya, metode ini terbilang cepat dalam mengurutkan
data, namun memang, cukup sumit dan sulit. Metode quicksort adalah metode
pengurutan yang menjadikan sebuah tabel data yang akan diurutkan menjadi dua
buah subbagian yang ditelusuri dari kiri dan dari kanan.

        Contoh untuk proses pengurutan bilangan pada contoh pseudo-code di atas
dengan bilangan berikut 26,76,49,23,56,37 :

  o Data awal yang belum terurut :
      26,76,49,23,56,37
  o Penentuan bilangan yang akan menjadi pivot (bilangan 26)
  o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan dan
      elemen kiri sebagai bilangan terakhir dari kumpulan bilangan
      26,76,49,23,56,37
  o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari
      elemen pivot tersebut. Geser elemen kanan ke arah kiri sampai ditemukan
      nilai dari elemen yang tidak lebih besar dari elemen tersebut
      26,37,49,23,56,76
  o Lanjutkan
      26,37,49,23,56,76
      26,37,23,49,56,76
  o Tukar vipot dengan elemen kiri
23,37,26,49,56,76
        o Urutkan sub bagian yang terbagi pivot
            23,37,26,49,56,76




Reff:
Munir, Rinaldi. (2007). Algoritma & Pemrograman dalam bahasa pascal dan C.Bandung:informatika

http://id.wikipedia.org

More Related Content

What's hot

Regresi Kuadrat Terkecil
Regresi Kuadrat TerkecilRegresi Kuadrat Terkecil
Regresi Kuadrat Terkecilindra herlangga
 
Analisis Leksikal - P4
Analisis Leksikal - P4Analisis Leksikal - P4
Analisis Leksikal - P4ahmad haidaroh
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)zachrison htg
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritriyana fairuz kholisa
 
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
Pengertian field, record, table, file, data dan basis data lengkap   pengerti...Pengertian field, record, table, file, data dan basis data lengkap   pengerti...
Pengertian field, record, table, file, data dan basis data lengkap pengerti...ym.ygrex@comp
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuanahmad haidaroh
 
Algoritma dan Struktur Data - Merge Sort
Algoritma dan Struktur Data - Merge SortAlgoritma dan Struktur Data - Merge Sort
Algoritma dan Struktur Data - Merge SortKuliahKita
 
Laporan Pratikum analisis regresi linier sederhana
Laporan Pratikum analisis regresi linier sederhanaLaporan Pratikum analisis regresi linier sederhana
Laporan Pratikum analisis regresi linier sederhanagita Ta
 
Fuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaanFuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaanRoziq Bahtiar
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKMiftahul Muttaqin
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)Kelinci Coklat
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputerHamdi Hamdi
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...Uofa_Unsada
 
Distribusi binomial, poisson dan normal
Distribusi binomial, poisson dan normalDistribusi binomial, poisson dan normal
Distribusi binomial, poisson dan normalAYU Hardiyanti
 
Ruang Vektor ( Aljabar Linear Elementer )
Ruang Vektor ( Aljabar Linear Elementer )Ruang Vektor ( Aljabar Linear Elementer )
Ruang Vektor ( Aljabar Linear Elementer )Kelinci Coklat
 

What's hot (20)

Sistem basis data 4
Sistem basis data 4Sistem basis data 4
Sistem basis data 4
 
Regresi Kuadrat Terkecil
Regresi Kuadrat TerkecilRegresi Kuadrat Terkecil
Regresi Kuadrat Terkecil
 
Turunan numerik
Turunan numerikTurunan numerik
Turunan numerik
 
Analisis Leksikal - P4
Analisis Leksikal - P4Analisis Leksikal - P4
Analisis Leksikal - P4
 
Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)Graf ( Matematika Diskrit)
Graf ( Matematika Diskrit)
 
Aljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskritAljabar boolean MK matematika diskrit
Aljabar boolean MK matematika diskrit
 
circular linked list
circular linked listcircular linked list
circular linked list
 
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
Pengertian field, record, table, file, data dan basis data lengkap   pengerti...Pengertian field, record, table, file, data dan basis data lengkap   pengerti...
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
 
Jaringan hebb
Jaringan hebbJaringan hebb
Jaringan hebb
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuan
 
Algoritma dan Struktur Data - Merge Sort
Algoritma dan Struktur Data - Merge SortAlgoritma dan Struktur Data - Merge Sort
Algoritma dan Struktur Data - Merge Sort
 
Laporan Pratikum analisis regresi linier sederhana
Laporan Pratikum analisis regresi linier sederhanaLaporan Pratikum analisis regresi linier sederhana
Laporan Pratikum analisis regresi linier sederhana
 
Fuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaanFuzzy fungsi keanggotaan
Fuzzy fungsi keanggotaan
 
Analisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMKAnalisa Website Traveloka - Makalah IMK
Analisa Website Traveloka - Makalah IMK
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Tugas normalisasi imaika penjualan komputer
Tugas normalisasi   imaika penjualan komputerTugas normalisasi   imaika penjualan komputer
Tugas normalisasi imaika penjualan komputer
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
 
Distribusi binomial, poisson dan normal
Distribusi binomial, poisson dan normalDistribusi binomial, poisson dan normal
Distribusi binomial, poisson dan normal
 
Ruang Vektor ( Aljabar Linear Elementer )
Ruang Vektor ( Aljabar Linear Elementer )Ruang Vektor ( Aljabar Linear Elementer )
Ruang Vektor ( Aljabar Linear Elementer )
 

Similar to Algoritma Pengurutan Data

Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania Mutia Rahmadania
 
Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadaniaTugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadaniaMutia Rahmadania
 
Rifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptRifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptFaldoPku
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data SortingBintangWijaya5
 
Metode sorting dan aplikasinya2
Metode sorting dan aplikasinya2Metode sorting dan aplikasinya2
Metode sorting dan aplikasinya2maidah .
 
Bab 2 sorting array
Bab 2 sorting arrayBab 2 sorting array
Bab 2 sorting arrayFahuda E
 
Struktur data chapter_12
Struktur data chapter_12Struktur data chapter_12
Struktur data chapter_12Sejahtera Affif
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianShofura Kamal
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)Fahuda E
 
Paper Metode Sorting
Paper Metode SortingPaper Metode Sorting
Paper Metode SortingNurul Habibah
 
Pertemuan viii Sorting
Pertemuan viii SortingPertemuan viii Sorting
Pertemuan viii SortingPutra Andry
 

Similar to Algoritma Pengurutan Data (20)

Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania
 
Tugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadaniaTugas Algoritma Mutia rahmadania
Tugas Algoritma Mutia rahmadania
 
Rifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).pptRifal Zulma Hendri (2220201009).ppt
Rifal Zulma Hendri (2220201009).ppt
 
Buku struktur data Sorting
Buku struktur data SortingBuku struktur data Sorting
Buku struktur data Sorting
 
Metode sorting dan aplikasinya2
Metode sorting dan aplikasinya2Metode sorting dan aplikasinya2
Metode sorting dan aplikasinya2
 
Bab 2 sorting array
Bab 2 sorting arrayBab 2 sorting array
Bab 2 sorting array
 
Siti rohmatul khoiriah
Siti rohmatul khoiriahSiti rohmatul khoiriah
Siti rohmatul khoiriah
 
Struktur data chapter_12
Struktur data chapter_12Struktur data chapter_12
Struktur data chapter_12
 
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung MedianLaporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
Laporan Praktikum Algoritma Pemrograman Modul V-Menghitung Median
 
Bab 2 sorting array (1)
Bab 2 sorting array (1)Bab 2 sorting array (1)
Bab 2 sorting array (1)
 
Paper Metode Sorting
Paper Metode SortingPaper Metode Sorting
Paper Metode Sorting
 
Ni luh dewi pradnyawati
Ni luh dewi pradnyawatiNi luh dewi pradnyawati
Ni luh dewi pradnyawati
 
Ni luh dewi pradnyawati
Ni luh dewi pradnyawatiNi luh dewi pradnyawati
Ni luh dewi pradnyawati
 
Algoritma Sorting
Algoritma SortingAlgoritma Sorting
Algoritma Sorting
 
Tugas Algoritma
Tugas AlgoritmaTugas Algoritma
Tugas Algoritma
 
tugas algoritma
tugas algoritmatugas algoritma
tugas algoritma
 
Sorting ppt
Sorting ppt Sorting ppt
Sorting ppt
 
Pertemuan 10 Tehnik Sorting
Pertemuan 10  Tehnik SortingPertemuan 10  Tehnik Sorting
Pertemuan 10 Tehnik Sorting
 
Pertemuan viii Sorting
Pertemuan viii SortingPertemuan viii Sorting
Pertemuan viii Sorting
 
ratna mustika sari
ratna mustika sariratna mustika sari
ratna mustika sari
 

Algoritma Pengurutan Data

  • 1. ANALISIS ALGORITMA PADA MASALAH SORTING Oleh Dea Rokhmatun Iradewa (0700940) Program Ilmu Komputer UPI Dalam ilmu komputer, yang dimaksud dengan algoritma pengurutan pada dasarnya adalah : • algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan tertentu. • Proses pengurutan data yg sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu. Yang pada kenyataannya ‘urutan tertentu’ yang umum digunakan adalah terurut secara numerikal ataupun secara leksikografi (urutan secara alfabetis). • Ada 2 jenis pengurutan, yaitu Ascending (naik) & Descending (turun) 1. Buble Sort Bubble sort atau yang disebut juga metode pengurutan apung adalah salah satu metode pengurutan yang bersifat langsung dan termasuk jenis pengurutan yang paling sederhana. Metode ini terinspirasi oleh gelembung sabun di air dimana delembung sabun yang lebih ringan dari air akan selalu naik ke permukaan. Nama bubble sort sendiri berasal dari sifat nilai terbesar yang selalu naik (ke akhir dari list) seperti gelembung sabun (bubble). Konsep dari bubble sort adalah sebagai berikut : o Pengecekan dimulai dari elemen paling awal o Elemen ke-1 dan ke-2 dari list dibandingkan o Jika elemen pertama lebih besar dari elemen kedua, dilakukan pertukaran. o Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga, seterusnya sampai elemen
  • 2. o terakhir. o Bila sudah sampai di elemen terakhir dilakukan pengulangan lagi dari awal sampai tidak ada terjadi o lagi pertukaran elemen. o Bila tidak ada pertukaran elemen lagi, maka elemen list terurut. Salah satu kelebihan algoritma bubble sort, terjadi saat semua elemen sudah terurut di mana hanya terjadi pengecekan pada setiap elemen, sehingga penelusuran hanya dilakukan satu kali saja. Ini merupakan kasus terbaik yang mungkin terjadi pada algoritma ini. Kelebihan lain dari algoritma ini adalah dapat dieksekusi dan dijalankan dengan cukup cepat. Keadaan terbaik terjadi bila data yang hendak disorting sudah terurut, Berapapun jumlah elemen datanya, jika data ya sudah terurut, maka Bubble Sort tersebut hanya melewatinya satu kali yaitu O(1500). Namun jika keadaan datanya belum terurut sama sekali, makadengan jumlah data 20 saja, pada perbandingan yang dilakukan = O(202) = O(4000) -> Lebih besar dibanding 1500 data pada kondisi terurut Oleh karena itu, metode pengurutan apung atau buble sort bukan merupakan metode pengurutan yang efisien. Hal ini disebabkan oleh banyaknya kemungkinan pertukaran yang terjadi pada proses pengapungan (baca: pengurutan) data. Untuk jumlah data yang banyak, maka algoritma ini akan mebutuhkan waktu yang lama. Namun kelebihan dari algoritma ini adalah kesederhanaan dan pola nya yang mudah dipahami.
  • 3. Efisiensi buble sort Berdasarkan tabel, tidak ada perbedaan performansi secara signifikan untuk pengurutan terhadap 100 item atau kurang. Namun, bubble sort tidak disarankan untuk pengurutan yang terus berulang, atau pengurutan yang menangani lebih dari 200 item. Pola Pengurutan Dengan Buble Sort : o Data awal yang belum terurut : o Penentuan bilangan yang akan menjadi acun (bilangan 26) o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan dan elemen kiri sebagai bilangan terakhir dari kumpulan bilangan o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari elemen tumpuan tersebut. Geser elemen kanan ke arah kiri sampai ditemukan nilai dari elemen yang tidak lebih besar dari elemen tersebut.
  • 4. o Ulangi o Tukar elemen tumpuan dengan elemen kiri o Urutkan sub bagian yang terhalang oleh tumpuan 2. Insertion Sort Insertion Sort adalah sebuah algoritma pengurutan sederhana, dengan cara pengurutan perbandingan yang mengurutkan suatu array atau list dengan membuat suatu entry. Metode ini tidak begitu mangkus dalam mengolah data yang besar (banyak) dibandingkan algoritma-algoritma yang lebih maju seperti Quicksort, tetapi mempunyai banyak keuntungan, diantaranya : 1. Sederhana dalam penerapan 2. Mangkus dalam pengolahan data yang kecil 3. Mangkus dalam data yang sudah sebagian terurut 4. Lebih mangkus dibanding Bubble Sort maupun Selection Sort 5. Stabil
  • 5. Algoritma insertion sort dalam bahasa C : Void insertion_sort(apvector <int> &array) { int i,j,key,array_length=array.length(); for(j=1;j<array_length;j++) { key=array[j]; for(i=j;(i>=0)&&(array[i]<key);i--) { aray[i+1]=array[i]; } array[i+1]=key; } return; } Keadaan terbaik didapat ketika list sudah dalam keadaan terurut, maka pengurutan ini hanya memakanwaktu O(n): dalam setiap iterasi, elemen pertama list hanya dibandingkan dengan elemen terakhir dari list. Salah satu kelebihan metode ini adalah Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat dibandingkan dengan Quicksort. Keadaan terburuk dari algoritma ini adalah jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya. Insertion Sort membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar. Walaupun demikian, loop dalam pada Inserion Sort sangat cepat, yang membuatnya salah satu algoritma pengurutan tercepat pada jumlah elemen yang sedikit. Sama halnya
  • 6. dengan buble sort, metode ini tidak mangkus (efektip) jika jumlah elemen data yang akan diurutkan banyak Contoh proses pengurutan bilangan 84,69,76,86,94,91 den dengan algoritma insertion sort
  • 7. 3. Selection Sort Layaknya insertion sort, algoritma ini sangat simple dan mudah untuk diimplementasikan. Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1. Contoh algoritma selection sort: void selectionSort(Object array[], int startIdx, int endIdx) { int min; for (int i = startIdx; i < endIdx; i++) { min = i; for (int j = i + 1; j < endIdx; j++) { if (((Comparable)array[min]).compareTo(array[j])>0) { min = j; } } swap(array[min], array[i]); } } Untuk memilih elemen terkecil memerlukan pemindaian seluruh (n) elemen yang membutuhkan n-1 kali perbandingan lalu memindahkannya ke posisi pertama. Sedang untuk memilih elemen kedua terkecil memerlukan pemindaian dari n-1 elemen dan begitu seterusnya sehingga (n-1) + (n-2) + ... + 2 + 1 = n(n-1)/2= O(n 2) perbandingan. Tiap perbandingan memerlukan satu kali pertukaran untuk n-1 elemen. Karena itu perbandingan mendominasi waktu pemrosesan yaitu O(n2).
  • 8. 4. Merge Sort Merge Sort adalah suatu algoritma pengurutan berbasis perbandingan. Algiritma ini merupakan salah satu contoh algoritma pembagian. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945. Algoritma ini menggunakan konsep rekursip. Beberapa konsep yang harus dipahami sbelum menelusuri algoritma Merge sort: o Divide Memilah masalah menjadi sub masalah o Conquer Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif o Kombinasi Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama Berikut menjelaskan langkah kerja dari Merge sort. o Divide Memilah elemen – elemen dari rangkaian data menjadi dua bagian. o Conquer Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif o Kombinasi Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian. Berikut algoritma pengurutan dengan merge sort:
  • 9. void mergesort(int numbers[],int temp[],int array_size) { m_sort(numbers,temp,0,array_size-1); } void m_sort(int numbers[],int temp[],int left,int right) { int mid; if(right > left) { mid=(right+left)/2; m_sort(numbers,temp,left,mid); m_sort(numbers,temp,mid+1,right); merge(numbers,temp,left,mid+1,right); } } void merge(int numbers[],int temp[],int left,int mid,int right) { int i,left_end,num_element,tmp_pos; left_end=mid-1; tmp_pos=left; num_elements=right-left+1; while((left<=left_end)&&(mid<=right)) { if numbers[left]<=numbers[mid] { temp[tmp_pos]=numbers[left]; tmp_pos=tmp_pos+1; left=left+1; } else { temp[tmp_pos]=numbers[mid]; tmp_pos=tmp_pos+1; mid=mid+1; } } while (left<=left_end) { temp[tmp_pos]=numbers[left]; left=left+1; tmp_pos=tmp_pos+1; }
  • 10. while (mid<=right) { temp[tmp_pos]=number[mid]; mid=mid+1; tmp_pos=tmp_pos+1; } for(i=0;i<=num_elements;i++) { numbers[right]=temp[right]; right=right-1; } } 5. Quick sort Algoritma Quick sort : array [1..10] of integer x <- { 34,67,23,28,98) procedure quicksort(input : integer l,integer r) integer i integer j i <- l j <- r repeat while x(i) < x(l) do i <- i+1 {end while} while x(j) > x(l) do j <- j-1 {end while} if i<j then integer temp temp <- x(i) x(i) <- x(j) x(j) <- temp i <- i+1 j <- j-1 {end if}
  • 11. until (i>j) if l<j then quicksort(l,j) {end if} if i<r then quicksort(i,r); {end if} Sesuai dengan namanya, metode ini terbilang cepat dalam mengurutkan data, namun memang, cukup sumit dan sulit. Metode quicksort adalah metode pengurutan yang menjadikan sebuah tabel data yang akan diurutkan menjadi dua buah subbagian yang ditelusuri dari kiri dan dari kanan. Contoh untuk proses pengurutan bilangan pada contoh pseudo-code di atas dengan bilangan berikut 26,76,49,23,56,37 : o Data awal yang belum terurut : 26,76,49,23,56,37 o Penentuan bilangan yang akan menjadi pivot (bilangan 26) o Inisialisasi elemen kiri sebagai bilangan kedua dari kumpulan bilangan dan elemen kiri sebagai bilangan terakhir dari kumpulan bilangan 26,76,49,23,56,37 o Geser elemen kiri kearah kanan sampai ditemukan nilai yang lebih besar dari elemen pivot tersebut. Geser elemen kanan ke arah kiri sampai ditemukan nilai dari elemen yang tidak lebih besar dari elemen tersebut 26,37,49,23,56,76 o Lanjutkan 26,37,49,23,56,76 26,37,23,49,56,76 o Tukar vipot dengan elemen kiri
  • 12. 23,37,26,49,56,76 o Urutkan sub bagian yang terbagi pivot 23,37,26,49,56,76 Reff: Munir, Rinaldi. (2007). Algoritma & Pemrograman dalam bahasa pascal dan C.Bandung:informatika http://id.wikipedia.org