hobingoding.com - Halo coders. Insertion sort adalah salah satu dari beberapa teknik pengurutan data yang ada dalam dunia pemrograman. Inti cara kerja / proses algoritma dari insertion sort ini adalah nilai / data yang ada pada tiap indeks-indeks array akan dibandingkan apakah data tersebut lebih tinggi / lebih rendah daripada data sebelumnya. Kemudian jika indeks-indeks yang telah dibandingkan tersebut ternyata lebih rendah / lebih tingi daripada data sebelumnya, maka akan dilakukan perpindahan / pergeseran data ke posisi yang sesuai.
Semisal contoh ada data dengan urutan 1 4 3 dan dilakukan pengurutan secara askending (kecil ke besar). Pada awal proses perbandingan, data yang akan dibandingkan adalah data yang ada pada indeks 0 (data 1) dan data yang ada pada indeks 1 (data 4). Karena data 1 lebih kecil daripada data 4 maka hasilnya sudah tepat (true) yang artinya posisinya sudah tepat sehingga tidak perlu dilakukan pergeseran.
Kemudian pembandingan akan dilanjutkan dengan membandingkan data 3 dengan data-data sebelumnya (data 1 dan data 4), pembandingan pertama yaitu pembandingan data 4 dan data 3, karena data 3 lebih kecil daripada data 4 maka data 3 dan data 4 akan tukar posisi sehingga hasil pembandingan pertama menjadi 1 3 4.
Kemudian akan dilanjutkan dengan pembandingan kedua yaitu pembandingan data 1 dan data 3, karena data 1 memang lebih kecil daripada data 3 atau dalam kata lain posisinya sudah tepat maka tidak perlu dilakukannya pergeseran posisi sehingga hasil akhir pengurutan datanya menjadi 1 3 4.
Permasalahan
Buatlah program untuk melakukan pengurutan sebanyak n data secara askending dengan menggunakan teknik insertion sort.
Test Case
Input Banyak Data : 8
Input Data : 10 5 8 12 15 22 24 18
Hasil : 5 8 10 12 15 18 22 24
Kode Program
#include <stdio.h>
int main() {
int banyak_data, i, j;
printf("Pengurutan Data dengan Algoritma Insertion Sort\n");
printf("visit us hobingoding.com\n\n");
// Input Banyak Data
printf("Input Banyak Data : ");
scanf("%d", &banyak_data);
int data[banyak_data];
// Input Data
printf("Input Data : ");
for(i = 0; i < banyak_data; i++) {
scanf("%d", &data[i]);
}
// Algoritma Insertion Sort
for(i = 0; i < banyak_data; i++) {
for(j = i; j > 0 && data[j] < data[j-1]; j--) {
int temp = data[j-1];
data[j-1] = data[j];
data[j] = temp;
}
}
// Hasil Pengurutan Data
printf("Hasil : ");
for (i = 0; i < banyak_data; i++) {
printf("%d ", data[i]);
}
return 0;
}
Lihat source code melalui github: fandipres
Output Program
Penjelasan Program
Pertama sekali saya disini membuat array untuk menyimpan data-data yang akan disimpan oleh user dimana array tersebut dapat menampung sebanyak n data (n / banyak data yang akan ditampung dapat diinput oleh user).
Kemudian saya membuat perulangan (perulangan pertama) untuk meminta inputan data dari user yang mana data tersebut nantinya akan disimpan pada indeks ke - i.
Lalu saya membuat perulangan kedua dan perulangan ketiga yang mana proses pengurutan data (sorting) terjadi dalam dua perulangan ini. Adapun proses yang terjadi pada dua perulangan ini adalah kedua perulangan ini berfungsi untuk mengambil data-data yang ada pada masing-masing indeks array. Kemudian data-data tersebut akan dibandingkan menurut askending (kecil ke besar) atau deskending (besar ke kecil) pada sintaks kode data[j]<data[j-1].
Jika ternyata pada urutan data tersebut ada yang tidak tepat maka data tersebut akan diproses pada sintaks int temp ... temp yang mana variabel temp disini berfungsi sebagai variabel penampung sementara (untuk memindahkan dua buah data diperlukan sebuah variabel baru) yang kemudian prosesnya kira-kira sama dengan proses yang telah saya jelaskan pada contoh di atas.
Perulangan terakhir saya gunakan untuk melakukan pencetakan dengan mengakses masing-masing indeks kemudian mencetak data yang ada pada masing-masing indeks tersebut.
Sekian penjelasan dari saya, semoga pembahasan saya ini bermanfaat dan jika ada pertanyaan silahkan tanyakan pada kolom komentar di bawah.