Anda di halaman 1dari 10

Tugas Desain dan Analisis Algoritma

Disusun oleh :
NI MADE RIKA PADESWARI KUSUMA
NIM. 1908561030
KELAS B

Dosen Pengampu :
Dra. Luh Gede Astuti,M.Kom.

PROGRAM STUDI INFORMATIKA


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
2020
BAB I
PENDAHULUAN
1.1 Latar Belakang
Sorting atau pengurutan adalah proses mengurutkan suatu data sampai data tersebut
tersusun baik secara ascending (dari kecil ke besar) maupun secara descending (dari besar
ke kecil). Sorting merupakan salah satu hal yang penting dalam dunia komputer karena
dapat mempermudah pekerjaan untuk mencari sebuah informasi yang diinginkan dengan
cepat. Ada beberapa metode yang dikenal dalam sorting diantaranya yaitu, bubble sort,
insertion sort, selection sort, merge sort, dan quick sort. Pemilihan metode sorting yang
tepat juga sangatlah penting karena berpengaruh pada efisiensi program nantinya.
Insertion sort merupakan suatu metode pengurutan data dengan cara menempatkan
tiap elemen data pada posisi sebenarnya dengan melakukan perbandingan terhadap
elemen data yang ada. Algoritma insertion sort bekerja seperti pengurutan kartu yang
dimana jika suatu kartu dipindahkan ke posisi sebenarnya, maka kartu lainnya akan
bergeser ke depan maupun ke belakang sesuai dengan kondisi pemindahan kartu tersebut.

1.2 Penjelasan Program


Pada program insertion sort ini, user akan diminta untuk menginputkan banyak
bilangan data yang ingin diurutkan dan bilangan acak yang ingin diurutkan. Setelah
semua data diinputkan, maka program akan bekerja untuk mengurutkan data secara
ascending atau dari data yang paling kecil ke besar.
BAB II
ANALISIS KOMPLEKSITAS

Analisis yang akan dilakukan pada algoritma insertion sort adalah penganalisisan
input dan output, basic operation, dan penganalisisan kompleksitas dari algoritma
insertion sort.
2.1 Fungsi Insertion Sort
Inti dari program insertion sort dilakukan pada fungsi ini yaitu mengurutkan
bilangan dengan metode insertion sort. Pengurutan data dilakukan secara ascending
atau pengurutan dari bilangan terkecil ke besar.
void insertion(int a[100], int n){
int i, j, temp;
for(i=1;i<n;i++){
temp = a[i];
j = i-1;

while(j>=0 && a[j]>temp){


a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}

2.2 Analisis Input dan Output


Program ini meminta user untuk menginputkan jumlah data atau bilangan
yang ingin diurutkan serta bilangan acak yang kemudian akan disimpan ke dalam
array of integer. Kemudian outputnya akan berupa bilangan yang telah terurut.
2.3 Eksekusi Program
Eksekusi program yang paling banyak terjadi terletak pada perulangan for
pada fungsi insertion. Terdapat operasi perbandingan yaitu j>=0 dan a[j]>temp. Serta
terdapat beberapa operasi penugasan juga.
2.4 Basic Operation
Basic operation atau operasi dasar merupakan operasi yang menjadi dasar dari
suatu algoritma dan akan selalu dilakukan saat perulangan sedang dieksekusi. Basic
operation atau operasi dasar pada algoritma insertion sort ini adalah operasi
perbandingan yaitu j>=0 dan a[j]>temp karena operasi ini akan selalu dieksekusi
setiap perulangan berlangsung.
2.5 Kompleksitas Insertion Sort
Algoritma insertion sort terdiri dari 2 perulangan bersarang dan terjadi n-1
pass dimana n merupakan banyak dari elemen array, dengan masing-masing iterasi
terjadi sebanyak i kali operasi perbandingan. i akan bernilai 1 untuk iterasi pertama,
kemudian bernilai 2 untuk iterasi selanjutnya, dan begitu seterusnya hingga iterasi ke
n-1.

T(n) = 1 + 2 + .... + n 1 = = = O(n2)

Jadi, kompleksitas algoritma insertion sort secara simptotik adalah O(n2). Insertion
sort lebih baik tidak digunakan untuk menangani data dengan lebih dari 2000 elemen.
Best case dari algoritma insertion sort adalah ketika elemen data yang diinputkan
sudah dalam keadaan terurut.
BAB III
IMPLEMENTASI DAN PEMBAHASAN

3.1 Flowchart
3.2 Source Code Program
#include<stdio.h>

void insertion(int a[100], int n){


int i, j, temp;
for(i=1;i<n;i++){
temp = a[i];
j = i-1;

while(j>=0 && a[j]>temp){


a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
int main(){
int i, n, data[100];
printf(".=====================================.\
n");
printf("| Insertion Sort |\
n");
printf(".=====================================.\n\
n");
printf("Input jumlah bilangan yang ingin diurutkan : ");
scanf("%d", &n);
printf("\nInput bilangan acak yang ingin diurutkan : ");
for(i=0;i<n;i++){
scanf("%d", &data[i]);
}
insertion(data,n);
printf("\n====================================\
n");
printf("Bilangan setelah dilakukan pengurutan : \n\n");
for(i=0;i<n;i++){
printf("%d ", data[i]);
}
return 0;
}

3.3 Penjelasan Source Code Program


Dalam program insertion sort, hal yang pertama dilakukan adalah menuliskan
file header <stdio.h> yang merupakan library untuk standard input output pada
Bahasa pemrograman C. Kemudian akan dibuat fungsi insertion yang bertipe void
dengan parameter fungsi array of integer a yang berukuran 100 dan integer n. Di
dalam fungsi insertion, akan dilakukan pendeklarasian variabel yang akan
digunakan yaitu variabel i, j, dan temp yang bertipe integer. Setelah itu dilakukan
perulangan for untuk menelusuri elemen data pada array. Penelusuran akan
dimulai dari indeks 1 sampai dengan indeks n-1. Saat masuk ke perulangan for,
variabel temp akan menyimpan nilai pada array a indeks ke i atau indeks elemen
data yang sedang ditelusuri. Kemudian variabel j akan menyimpan nilai (i–1).
Setelah itu, akan dilakukan perulangan while untuk melakukan proses insertion
sort dengan menempatkan elemen data yang sedang ditelusuri ke posisi yang
benar. Perulangan ini akan dilakukan selama nilai dari variabel j lebih besar atau
sama dengan 0 dan elemen data pada array a indeks ke j lebih besar dari nilai pada
variabel temp. Jika kondisi memenuhi syarat atau bernilai true maka elemen pada
array a indeks ke j+1 akan menyimpan elemen data pada array a indeks ke j.
Artinya jika elemen yang berada disebelah kiri bernilai lebih besar, maka elemen
tersebut akan digeser ke sebelah kanan dan akan digantikan posisinya oleh elemen
yang sedang ditelusuri. Variabel j akan terus berkurang 1 selama perulangan
berlangsung. Jika kondisi tidak memenuhi syarat, maka akan keluar dari
perulangan dan array a pada indeks ke j+1 akan menyimpan nilai dari variabel
temp. Jika seluruh elemen data pada array sudah ditelusuri artinya data sudah
terurut.
Kemudian pada fungsi main akan dilakukan pendeklarasian variabel yang
digunakan. Terdapat variabel i dan n yang bertipe integer. Variabel n digunakan
untuk menyimpan jumlah data yang ingin diurutkan dan variabel i digunakan
untuk proses perulangan. Terdapat juga array of integer yang berukuran 100
dengan nama data yang digunakan untuk menyimpan elemen yang diinputkan
oleh user. Kemudian ada perintah input, user diminta untuk menginputkan jumlah
bilangan yang ingin diurutkan dan menginputkan data bilangan yang ingin
diurutkan dengan bantuan perulangan for. Setelah itu, fungsi insertion akan
dipanggil untuk mengurutkan bilangan yang diinputkan oleh user. Setelah
dipanggilnya fungsi insertion, artinya bilangan sudah terurut dan akan dicetak
dengan bantuan perulangan for.

3.4 Hasil Running Program


BAB IV
KESIMPULAN

Berdasarkan pemaparan tentang penjelasan serta analisis pada algoritma insertion sort
diatas, dapat ditarik beberapa kesimpulan diantaranya :
1. Sorting atau pengurutan adalah proses mengurutkan suatu data sampai data tersebut
tersusun baik secara ascending (dari kecil ke besar) maupun secara descending (dari
besar ke kecil). Salah satu metode yang dikenal yaitu metode insertion sort. Metode
insertion sort merupakan suatu metode pengurutan data dengan cara menempatkan
tiap elemen data pada posisi sebenarnya dengan melakukan perbandingan terhadap
elemen data yang ada.
2. Kompleksitas untuk algoritma insertion sort secara simptotik adalah O(n2) karena
terdiri dari dua perulangan bersarang. Algoritma Insertion sort sebaiknya tidak
digunakan untuk mengurutkan data dengan lebih dari 2000 elemen.
REFERENSI

GeeksForGeeks. Insertion Sort. Diakses pada 22 Oktober 2020, dari


https://www.geeksforgeeks.org/insertion-sort/

Tjaru, Setia Negara B. 2009. Kompleksitas Algoritma Pengurutan Selection Sort dan
Insertion Sort. Makalah IF2091 Strategi Algoritmik Tahun 2009. Bandung: Institut
Teknologi Bandung.

Wisudawan, Wahyu Fahmy. 2007. Kompleksitas Algoritma Sorting yang Populer Dipakai.
Makalah IF2153. Bandung: Institut Teknologi Bandung.

Anda mungkin juga menyukai