Insertion Sort

Bookmark and Share
Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu.
Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja, sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan akan diletakkan.
Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan berurutan pada meja kedua.
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua). 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 yangtersisa pada bagian array yang belum diurutkan.

Dengan cara penyisipan
Pengurutan dengan cara penyisipan :
  • Anggap elemen ke–1 sampai dengan elemen ke j telah terurut
  • Elemen ke i adalah elemen yang akan disisipkan antara elemen yang telah terurut (1 sampai j) pada posisi yang tepat, misalnya pada p
  • Pencarian posisi yang tepat untuk i adalah sebagai berikut :
  • Simpan l[i] pada suatu variabel temporer, temp.
  • Geser elemen j ke bekas tempat i kemudian geser elemen j – 1 ke i – 1, dan seterusnya sampai mencapai posisi yang tepat untuk i, yaitu p
Algoritma

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

Contoh Insertion Sort


Contoh sintax insertion sort >> Download <<
Rata Penuh

{ 0 comment... Views All / Send Comment! }

Post a Comment