Hallo teman-teman, kali ini saya ingin membahas tentang Insertion Sort di Java.
Algoritma insertion sort adalah sebuah algoritma sederhana yang cukup efisien untuk mengurutkan sebuah list yang hampir terurut. Algorima ini juga bisa digunakan sebagai bagian dari algoritma yang lebih canggih. Cara kerja algoritma ini adalah dengan mengambil elemen list.
satu-per-satu dan memasukkannya di posisi yang benar seperti namanya. Pada array, list yang baru dan elemen sisanya dapat berbagi tempat di array, meskipun cukup rumit. Untuk menghemat memori, implementasinya menggunakan pengurutan di tempat yang membandingkan elemen saat itu dengan elemen sebelumnya yang sudah diurut, lalu menukarnya terus sampai posisinya tepat. Hal ini terus dilakukan sampai tidak ada elemen tersisa di input. Seperti sudah dibahas di bagian pendahuluan, salah satu implementasinya pada kehidupan sehari-hari adalah saat kita mengurutkan kartu remi. Kita ambil kartu satuper-satu lalu membandingkan dengan kartu sebelumnya untuk mencari posisi yang tepat. Variasi pada umunya yang dilakukan terhadap array pada insertion sort adalah sebagai berikut :
- Elemen awal di masukkan sembarang, lalu elemen berikutnya dimasukkan di bagian paling akhir.
- Elemen tersebut dibandingkan dengan elemen ke (x-1). Bila belum terurut posisi elemen sebelumnya digeser sekali ke kanan terus sampai elemen yang sedang diproses menemukan posisi yang tepat atau sampai elemen pertama.
- Setiap pergeseran akan mengganti nilai elemen berikutnya, namun hal ini tidak menjadi persoalan sebab elemen berikutnya sudah diproses lebih dahulu.
- Implementasi yang sederhana
- Paling efisien untuk data berukuran kecil
- Merupakan online algorithmic, yang berarti bisa langsung melakukan sort setiap ada data baru
- Proses di tempat (memerlukan O(1) memori tambahan)
- Stabil.
Kode Direktori - Insertion Sort Java |
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package BelajarTingkatDewa; /** * * @author Rosadi */ public class InsertionSort { /** * @param args the command line arguments */ public static int i,j,tampung; public static void main(String[] args) { int A[]={3,4,1,2,8}; System.out.println("Before Sorting :"); for(int i=0;i0 && A[j-1] > tampung) { A[j]=A[j-1]; j--; } A[j]=tampung; } System.out.println("\nAfter Sorting : "); for(int i=0;i++) { j=i; tampung=A[i]; while(j>0 && A[j-1] > tampung) { A[j]=A[j-1]; j--; } A[j]=tampung; } System.out.println("\nAfter Sorting : "); for(int i=0;i<A.length;i++) { System.out.print(" "+A[i]); } System.out.println(); } }
Semangat Belajar Juragan. Ingat zangan di copas langsung ya kodingnya. Lebih baik ketik ulang. Semangat!!!
1 comment
thanks gan,,,