Jumat, 05 Juni 2015

INSERTION SORT


INSERTION SORT
Insertion Sort (Metode Penyisipan)


  • Insertion Sort merupakan algoritma yang efisien untuk mengurutkan angka yang mempunyai jumlah elemen sedikit. Dimana:- Input : deretan angka sejumlah n buah
    - Output : permutasi (pengurutan) sejumlah n angka dari input yang sudah terurut secara ascending maupun descending 
  • Metode penyisipan (Insertion sort) bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array berhasil diurutkan.
  • Metode ini mengurutkan bilangan-bilangan yang telah dibaca; dan berikutnya secara
    berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi kiri array yang telah terurut. 
Insertion Sort bekerja seperti banyak orang yang sedang mengurutkan kartu di tangan. Dimulai dengan tangan kiri yang kosong dan kartunya tertumpuk di meja. Selanjutnya kita ambil satu persatu kartu di meja dan diletakkan di tangan kiri dengan posisi yang benar (terurut). Untuk menemukan posisi yang banar, maka kita harus membandingkan satu persatu kartu yang ada (di tangan kiri) secara berurutan.


Contoh Insertion Sort :


  • Bagian biru/abu-abu (dua bilangan pertama) sekarang dalam keadaan terurut secara relatif.
 

Berikutnya, kita perlu menyisipkan bilangan ketiga (4) ke dalam bagian biru/abu-abu sehingga
setelah penyisipan tersebut, bagian biru/abu-abu tetap dalam keadaan terurut secara relatif;
CARANYA :
pertama : Ambil bilangan ketiga (4).



  • Kedua : Geser bilangan kedua (10) shg ada ruang untuk disisipi.




    • Ketiga : Sisipkan bilangan 4 ke posisi yang tepat

    • Sekarang, tiga bilangan pertama sudah terurut secara relatif dan kita sisipkan bilangan keempat kepada tiga bilangan pertama tsb.  Setelah penyisipan, empat bilangan pertama haruslah dalam keadaan terurut secara relatif.

    •  Ulangi proses tsb sampai bilangan terakhir disisipkan


    •  Proses Sorting Selesai

     Contoh koding Insertion sort

    #include <iostream>
    #include <conio.h>
    using namespace std ;
    int data[10],data2[10];
    int n;

    void tukar(int a, int b)
    {
     int t;
     t = data[b];
     data[b] = data[a];
     data[a] = t;
    }

    void insertion_sort()
    {
     int temp,i,j;
     for(i=1;i<=n;i++)
     {
      temp = data[i];
      j = i -1;
      while(data[j]>temp && j>=0)
      {
       data[j+1] = data[j];
       j--;
      }
     data[j+1] = temp;
     }
    }
    int main()
    {
     cout<<"\t\t\t===PROGRAM INSERTION SORT===\n\n"<<endl;

     //Input Data
     cout<<"Masukkan Jumlah Data : ";
     cin>>n;
     cout<<"\n";
     for(int i=1;i<=n;i++)
     {
      cout<<"Masukkan data ke "<<i<<" : ";
      cin>>data[i];
      data2[i]=data[i];
     }

     insertion_sort();

     cout<<"\n\n";
     //tampilkan data
     cout<<"Data Setelah di Sort : ";
     for(int i=1; i<=n; i++)
     {
      cout<<" "<<data[i];
     }
     cout<<"\n\nSorting Selesai";
     getch();
    };
    hasil :

    referensi :
    http://sisinform-aaf1231072.blogspot.com/2013/02/insertion-sort.html







    Tidak ada komentar:

    Posting Komentar