Lompat ke konten Lompat ke sidebar Lompat ke footer

Widget Atas Posting

Insertion Sort dalam Bahasa C

Algoritma Insertion Sort dalam Bahasa C
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.

Untuk penjelasan lebih lengkap / lebih teoritis tentang insertion sort silahkan klik penjelasan saya yang ada di bawah ini:

Baca juga: Algoritma Insertion Sort dan Penjelasannya


Permasalahan

Buatlah program untuk melakukan pengurutan sebanyak n data secara askending dengan menggunakan teknik insertion sort.

Test Case

Input Banyak Data: 8
Data yang Belum Berurut: 10 5 8 12 15 22 24 18
Hasil Pengurutan Data: 5 8 10 12 15 18 22 24

Kode Program:
#include <stdio.h>
//source code by hobingoding.com

int main(){
    int banyakData, i, j;

    printf("Pengurutan Data dengan Algoritma Insertion Sort\n");
    printf("source code by hobingoding.com\n");
    printf("\nInput Banyak Data \t: ");
    scanf("%d", &banyakData);
    int data[banyakData];

    //Perulangan untuk menginput data sebanyak n
    printf("Data yang Belum Berurut : ");
    for(i = 0; i < banyakData; i++)
    {
        scanf("%d", &data[i]);
    }

    //Algoritma Insertion Sort
    for(i = 0; i < banyakData; 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;
        }
    }

    //Pencetakan data yang sudah diurutkan
    printf("Hasil Pengurutan Data   : ");
    for (i = 0; i < banyakData; i++)
    {
        printf("%d ", data[i]);
    }
    printf("\n");

    getch();
    return 0;
}

Output Program

Algoritma Insertion Sort Bahasa C

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.
Fandi Presly Simamora
Fandi Presly Simamora Don't think too long because the chance can't waiting for you.

Posting Komentar untuk "Insertion Sort dalam Bahasa C"

Berlangganan via Email