Anda di halaman 1dari 23

PROJEK UAS

PENGURUTAN DATA DENGAN PENCARIAN INTSERTION SORT

Oleh Kelompok 6

Familia Ma’e (15120027)

Merliana Go’o (15120100)

Emanuel Natalis E. Mares Lamalelang (15120023)

SEKOLAH TINGGI MANAJEMEN INFORMATIKA KOMPUTER

(STIKOM) UYELINDO KUPANG

2017
ABSTRAK

Makalah ini membahas tentang beberapa algoritma pengurutan yang biasa digunakan
pada lingkungan akademisi. Pengurutan atau Sorting merupakan suatu proses mengatur susunan
data-data menurut syarat tertentu. Meskipun pengurutan ini sepertinya hanya sebuah masalah
klasik dalm keinformatikaan, namun perannya tidak dapat dipisahkan terutama dalam
pengolahan data. Suatu pengolahan data biasanya akan lebih efisien jika datanya telah terurut,
seperti Binary Searchmisalnya. Mengingat pentingnya pengurutan dalam penggunaannya dalam
hal keinnformatikaan, maka perlu diketahui algoritma mana yang sebenarnya paling efisien
untuk dipakai. Meskipun suatu algoritma pengurutan mempunyai kelebihan dan keterbatasan
masing-masing, kompleksitas dan keefisiensiannya tetap harus dipertimbangkan. Untuk
menjelaskan masalah keefisiensian dari suatu algoritma, digunakanlah teori kompleksitas
algoritma. Maka muncullah Big-Oh sebagai notasi yang melambangkan suatu nilai keefisiensian
suatu algoritma.
Kata Pengantar

Puji syukur Penulis panjatkan kepda Tuhan yang Maha Esa, karena atas tuntunan dan
kasihnya Penulis mampu menyelesaikan makalah dengan judul Pengurutan Data dengan
insertionsort. Makalah ini di tulis dengan tujuan untuk memberikan pengetahuan untuk dapat
mempelajari dan memahami proses pengurutan dengan menggunakan metode insertionsort
secarah mudah dan sesuai dengan kebutuhan.
Dalam makalah ini juga penulis berusaha member materi secara lengkap,sederhana dan mudah di
aplikasikan
Akir kata penulis ingin mengucapakan terimakasi kepada para pembaca yang telah
menyempatkan waktu untuk membacanya. Dan selamat mencoba..

Kupang, 2017
Daftar isi

Abstrak

Kata Pengantar

Daftar isi

Bab 1 Pendahuluan

A. Lata Belakang
B. Batasan Masalah
C. Tujuan Penulisan

Bab 2. Tinjauan Pustaka

A. Pengertian Insertion Sort


B. Contoh Kasus

Bab 3. Pembahasan

A. Analisis Leksikal

B. Analisa Simantik

Bab 4. Penutup

A. Kesimpulan
B. Saran

Daftar Pustaka
BAB 1
PENDAHULUAN

A. Latar Belakang

Pengurutan adalah satu hal yang sangat penting dalam dunia keinformatikaan. Terutama
dalam pengelolaan data. Sering kali, dengan pengurutan, proses pengelolaan data dapat
dilakukan dengan lebih mudah dan efisien. Binary Search contohnya, pasti lebih efisien daripada
algoritma pencarian biasa yang lebih konvensional. Namun kita dapat melakukan Binary Search
jika data yang bersangkutan belum diurut terlebih dahulu. Ada berbagai macam algoritma
pengurutan. Namun hanya beberapa yang dipakai sebagai “pengenalan” terhadap siswa-siswa di
suatu institusi. Di antaranya adalah Selection Sort dan Insertion Sort. Kedua algoritma
Pengurutan ini lah yang menjadi fokus pembahasan pada makalah ini.
Untuk dapat mengetahui seberapa efisien suatu algoritma, dipakailah teori kompleksitas
algoritma sebagai
dasar kajian. Kompleksitas terbagi atas dua, yaitu kompleksitas waktu dan kompleksitas ruang.
Kompleksitas cenderung tidak dibahas, karena hal tersebut berkenaan dengan struktur data yang
digunakan untuk mengimplementasikan algoritma. Sementara topik tersebut di luar kajian
Matematika DiskritKompleksitas Waktu, T(n), adalah jumlah operasi yang dilakukan untuk
melaksanakan algoritma sebagai fungsidari ukuran masukan n. Maka, dalam mengukur
kompleksitas waktu dihitunglah banyaknya operasi yang dilakukan oleh algoritma. Idealnya, kita
memang harus menghitung semua operasi yang ada
B. Batasan Masalah
1. Algoritma yang dikaji hanya insertion sort.
2. Implementasi algoritma menggunakan bahasa pemrograman C++.
3. Pengujian performa dilakukan dengan membandingkan waktu eksekusi pengurutan.
4. Pengujian dibatasi dan hanya dilakukan sesuai dengan spesifikasi perangkat keras.

C. Tujuan Penulisan
1. Menerapkan algoritma insertion sort ke dalam bahasa C++.
2. Agar mahasiswa dapat memahami metode insertion sort
BAB 2
TINJAUAN PUSTAKA

A.Pengertian Insertion Sort

Insertion sort adalah sebuah algoritma pengurutan yang membandingkan dua elemen data
pertama, mengurutkannya, kemudian mengecek elemen data berikutnya satu persatu dan
membandingkannya dengan elemen data yang telah diurutkan. Karena algoritma ini bekerja
dengan membandingkan elemen-elemen data yang akan diurutkan, algoritma ini termasuk pula
dalam comparison-based sort.

Ide dasar dari algoritma Insertion Sort ini adalah mencari tempat yang “tepat” untuk
setiap elemen array, dengan cara sequential search. Proses ini kemudian menyisipkan sebuah
elemen array yang diproses ke tempatnya yang seharusnya. Proses dilakukan sebanyak N-1
tahapan (dalam sorting disebut sebagai “pass“), dengan indeks dimulai dari 0.
Proses pengurutan dengan menggunakan algoritma Insertion Sort dilakukan dengan cara
membandingkan data ke-i (dimana i dimulai dari data ke-2 sampai dengan data terakhir) dengan
data berikutnya. Jika ditemukan data yang lebih kecil maka data tersebut disisipkan ke depan
sesuai dengan posisi yang seharusnya.

Keuntungan menggunakan insertion sort adalah :


1. Dapat diimplementasikan dengan simpel.
2. Sangat efisien untuk data berukuran kecil.
3. Insertion sort dapat langsung menyortir list data ketika menerima input.
4. Secara praktikal lebih efisien dibandingkan dengan selection dan bubble sort.

Kelebihan

1. Sederhana dalam penerapannya.


2. Mangkus dalam data yang kecil.
3. Jika list sudah terurut atau sebagian terurut maka Insertion Sort akan lebih cepat
dibandingkan dengan Quicksort.
4. Mangkus dalam data yang sebagian sudah terurut.
5. Lebih mangkus dibanding Bubble Sort dan Selection Sort.
6. Loop dalam pada Inserion Sort sangat cepat, sehingga membuatnya salah satu algoritma
pengurutan tercepat pada jumlah elemen yang sedikit.
7. Stabil.

Kekurangan

1. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik.
2. Untuk larik yang jumlahnya besar ini tidak praktis.
3. Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan
mengganti seluruh bagian sebelum menyisipkan elemen berikutnya.
4. Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam
pengurutan elemen dalam jumlah besar.

B. Contoh Kasus Insertion Sort

Bagian biru/abu-abu (dua bilangan pertama) sekarang dalam keadaan terurut secara relatif.

Berikutnya, kita perlu menyisipkan bilangan ketiga (4) ke dalam bagian biru/abu-abu sehingga
setelah penyisipan tersebut, bagian biru/abu-abu tetap dalam keadaan terurut secara relatif;

Caranya:
pertama : Ambil bilangan ketiga (4).
Kedua : Geser bilangan kedua (10) shg ada ruang untuk disisipi.

Ketiga : Sisipkan bilangan 4 ke posisi yang tepat

Sekarang, tiga bilangan pertama sudah terurut secara relatif dan kita sisipkan bilangan keempat
kepada tiga bilangan pertama tsb. Setelah penyisipan, empat bilangan pertama haruslah dalam
keadaan terurut secara relatif.

Ulangi proses tsb sampai bilangan terakhir disisipkan


Proses Sorting Selesai
BAB 3

PEMBAHASAN

PROGRAM DENGAN C++

#include <stdio.h>

int main()

int n, array[1000], c, d, t;

printf("Masukkan Banyak Elemen ");

scanf("%d", &n);

printf("Masukkan %d Bilangan\n", n);

for (c = 0; c < n; c++)

scanf("%d", &array[c]);

for (c = 1 ; c <= n - 1; c++) {

d = c;

while ( d > 0 && array[d] < array[d-1])

t = array[d];

array[d] = array[d-1];

array[d-1] = t;
d--;

printf("Data Yang Sudah Terurut :\n");

for (c = 0; c <= n - 1; c++) {

printf("%d\n", array[c]);

return 0;

}
URUTAN TEKNIK KOMPILASI

A. Analisis Leksikal
Analisis Leksikal Terdiri Dari beberapa bagian yakni :

Identifier(Keyword)Bisa berupa keywords atau nama. Keywords adalah kata kunci yang sudah
didefinisikan oleh suatu bahasa seperti INCLUDE, END, IF, COUT didalam C++.

No Listning Tipe data


1 Include

2 Int

3 Cout

4 If Identifier (Keyword)

5 Getche

6 For

7 Auto

8 Break

9 Case

10 Char

11 Const

12 Continue

13 Default

14 Do
15 Double

16 Else

17 Extern

18 Float

19 Goto

20 Long

21 Endl

Identifier (Variable)

No Listning Tipe Data


1 A

2 i

3 n

4 Done Identifier (Variabel)

5 Pos

6 Value

7 Underscore ( _ )
Nilai Konstanta

Suatu konstanta yang terdapat dalam program, bisa berupa konstanta integer, real, boolean,
character, string.

if pos <= 1 then

done := true

else if value >= a[pos-1] then

done := true

else

begin

a[pos] := a[pos-1];

pos := pos-1

end

Operator dan Delimeter

Operator misalnya operator aritmatika (+, - , * , / , ) operator logika (<, =, >). Delimeter berguna
sebagai pemisah/pembatas, misalnya: ( ) , ; , :, white-space. White-space adalah pemisah yang
diabaikan di program seperti spasi, karakter enter (carriage return), ganti baris (Line Feed),
akhir file (End of file).

No Listning Tipe Data


1 - Operator

2 > Operator
3 [ Delimeter

4 ] Delimeter

5 ; Delimeter

6 : Delimeter

7 := Delimeter

8 “ Delimeter

9 ( Delimeter

10 ) Delimeter

11 { Delimeter

12 } Delimeter
B. Analisa Semantik Berupa

 Postfix
Dari program sederhana yang telah dibuat dapat ditentukan notasi postfix

Listning Notasi Postfix


1.pos

if pos <= 1 then 2.1

done := true 3.<=

else if value >= a[pos-1] then 4.a

done := true 5.>=

else 6.-1

7.done

 Triple Notation
Dari program sederhana yang telah dibuat dapat ditentukan notasi triple sebagai
berikut:

Listning Notasi

if pos <= 1 then

done := true 1.<,pos,1

else if value >= a[pos-1] then 2.:=,done,true

done := true 3.>=,a,pos-1

else
 Quardruples Notation
Dari program sederhana yang telah dibuat dapat ditentukan notasi quardruples
sebagai berikut:

Listning Notasi

if pos <= 1

1. < , pos , 1 , (T1)


then 2. := , done, value (T2)
3. := , a ,pos-1 (T3)

done := true

else if

value >= a[pos-1] then

done := true

else
PENANGANAN SINTAKS ERROR

Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan huru “t” pada “stdio” di sintaks awal

Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan { (buka kurung kurawal) setelah sintaks main()


Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan ; (titik koma) setelah sintaks printf (“masukan banyak elemen
”)

Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan - (tanda kurang) pada sintaks while ( d > 0 && array[d] <
array[d-1])
Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan ] (tutup kurung siku) pada sintaks array[d] = array[d-1];

Penyebab : terdapat symbol yang kurang

Cara mengatasi : tambahkan “ (petik dua) pada sintaks printf("%d\n", array[c]);


BAB 1V

KESIMPULAN DAN SARAN

A. KESIMPULAN

KESIMPULAN Dari hasil implementasi maupun pengujian yang telah dilakukan dapat
ditarik beberapa kesimpulan sebagaimana berikut ini: 1. Dari hasil pengujian diketahui
bahwa algoritma

B. SARAN
Perlu di lakukan uji tingkat kelayakan media pembelajaran mata kuliah Algoritma
Pemrograman bab pengurutan data (data sorting).
DAFTAR PUSTAKA

[1] Anonim. C++ Algorithms Sample Source Codes > Merge Sort.
http://www.cplusplus.happycodings.com /Algorithms/code17.html. Diakses pada 18 Mei 2011.
[2] Anonim. Rand.

http://www.cplusplus.com/reference/clib rary/cstdlib/rand/. Diakses pada 17 Mei 2011. [3]


Anonim. Srand. http://www.cplusplus.com/reference/clib rary/cstdlib/srand/. Diakses pada 17
Mei 2011. [4] Atrinawati, L. H. Analisis Kompleksitas algoritma untuk Berbagai Macam Metode
Pencarian Nilai (Searching) dan Pengurutan Nilai (Sorting) pada Tabel. Program Studi Teknik
Informatika. ITB. Bandung. [5] Bingheng, W. 2008. Merge Sort. Dept. of Computer Science.
Florida Institute of Technology. Florida, USA. [6] Drozdek, A. 2001. Data Structures and
Algorithms in C++. Brooks/Cole Thomson Learning. California. USA. [7] Hibbler, R. 2008.
Merge Sort. Dept. of Computer Science. Florida Institute of Technology. Florida, USA. [8]
Horman, T. H., Leiserson, C. E., Rivest, R. L., dan Stein, C. 2009. Introduction to Algorithms.
The MIT Press. Cambridge. Massachusetts London. England. [9] Horstmann, C. 2008. C++ for
Everyone. Wiley Publishing. San Jose, USA. [10] Karve, S. Insertion Sort Example.
http://www.dreamincode.net/code/snipp et279.htm. Diakses pada 18 Mei 2011. [11] Kristanto,
A. 2009. Algoritma dan Pemrograman dengan C++. Graha Ilmu. Yogyakarta. [12] Liberty, J.,
Rao, S., Jones, B. 2008. Sams Teach Yourself C++ in One Hour a Day. Sams Publishing.
Indiana, USA. [13] MSDN. GetTickCount Function.
http://msdn.microsoft.com/enus/library/ms724408%28v=vs.85%29.as px. Diakses pada 17 Mei
2011. [14] Santosa, P.I. 2004. Struktur Data Menggunakan Turbo Pascal. Penerbit ANDI.
Yogyakarta. [15] Song, Q. 2008. Merge Sort Algorithm. Dept. of Computer Science. Florida
Institute of Technology. Florida, USA

Anda mungkin juga menyukai