KATA PENGANTAR
Puji syukur kepada Tuhan Yang Maha Esa karena kami dapat menyelesaikan makalah ini. Walaupun berbagai hambatan dan permasalahan, rencana untuk menyusun makalah ini dapat terwujud juga. Makalah ini disusun untuk salah satu tugas mata kuliah Algroritma Pemrograman pada program studi Matematika. Diharapkan setelah membaca makalah ini mahasiswa dapat menambah wawasan dan dapat menganalisa persoalan – persoalan – persoalan persoalan yang dihadapkan Daftar pustaka kami sertakan dalam makalah ini di halaman terakhir agar mempermudah pembaca yang berminat menelusuri lebih lanjut topik yang berkaitan. Kami sadar makalah ini masih jauh dari sempurna. Tidak sedikit ide, saran, dan kritik yang telah diberikan menjadi masukan bagi kami dalam menyelesaikan makalah i ni. Oleh karena itu, kami mengharapkan ide, kritik, dan saran yang membangun atas isi makalah. Masukan tersebut akan dengan senang hati kami terima guna perbaikan di kemudian hari. Akhirnya, semoga makalah ini dapat memberikan member ikan pengetahuan kepada pembaca sekalian dan Tuhan Yang Maha Esa selalu memberikan petunjuk dan bimbingan-Nya pada kita semua.
Surabaya, 25 Mei 2015
Penyusun
BAB I PENDAHULUAN
1.1 Latar Belakang
Sorting atau pengurutan adalah proses menyusun elemen-elemen dari masukan awal acak menjadi keluaran akhir tertata dengan urutan tertentu, Proses tersebut diimplementasikan dalam bermacam aplikasi. Dimana input : deretan angka sejumlah ( n ) buah. - Output : permutasi (pengurutan) sejumlah n angka dari input yang sudah terurut secara ascending maupun descending . Metode ini mengurutkan bilangan-bilangan yang telah dibaca dan berikutnya secara berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi kiri array yang telah terurut. Contoh penerapannya antara lain berupa rincian transaksi sesuai urutan tanggal dan jam pada perbankan, daftar hadir yang diurutkan berdasarkan nomor induk dan daftar pustaka yang diurutkan sesuai abjad pengarang ataupun kata log buku di perpustakaan. Fungsi-fungsi statistik seperti median dan pembuatan kuartil data (quarter), desil dan percentil (percentile) mensyaratkan data untuk diurutkan terlebih dahulu.Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat mendasar dan sering digunakan. Oleh karena itu, pemahaman atas algoritma-algoritma yang ada sangatlah berguna. Selain menjadi suatu aplikasi yang berdiri sendiri, pengurutan juga biasanya menjadi suatu bagian dari algoritma yang lebih besar.
1.2
Rumusan Masalah
a)
Apa pengertian Insertion Sort ?
b)
Apa macam-macam metode Insertion Sort ?
c)
Bagaimana cara pembuatan program Insertion sort ?
BAB 2 PEMBAHASAN
2.1 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 ang 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. Inde algoritma dari metode insertion sort ini dapat dianalogikan sama seperti mengurutkan kartu, dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut. Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri arra y terurutkan sampai dengan seluruh array diurutkan.
2.2. Macam-macam Metode Insertion Sort 1. Langsung (Straight Insertion Sort ) Ilustrasi dari langkah-langkah pengurutan dengan algoritma penyisipan langsung ( straight insertion sort ) dapat dilihat pada tabel berikut : Iterasi Awal
Data Data Data [0] [1] [2] 12 35 9
Data [3] 11
Data [4] 3
Data [5] 17
Data Data [6] [7] 23 15
Data [8] 31
Data [9] 20
i=1
12
35
9
11
3
17
23
15
31
20
i=2
12
35
9
11
3
17
23
15
31
20
i=3
9
12
35
11
3
17
23
15
31
20
i=4
9
11
12
35
3
17
23
15
31
20
i=5
3
9
11
12
35
17
23
15
31
20
i=6
3
9
11
12
17
35
23
15
31
20
i=7
3
9
11
12
17
23
35
15
31
2. Metode Penyisipan Biner ( Binary Insertion Sort ) Metode pengurutan dengan algoritma penyisipan biner ( binary insertion sort ) memperbaiki metode pengurutan dengan algoritma penyisipan langsung dengan melakukan proses perbandingan yang lebih sedikit sehingga proses pengurutan lebih cepat. Metode penyisipan biner melakukan proses perbandingan dengan membagi dua bagian data dari posisi 0 sampai dengan i-1 yang disebut dengan bagian kiri dan kanan. Apabila data pada posisi ke i berada pada jangkauan kiri maka proses perbandingan dilakukan hanya pada bagian kiri dan menggeser posisi sampai i. 2.3 Proses Program Insertion Sort Contoh 1 : Pertama ,C1 Algoritma 1. MULAI 2. Ambil satu data ke-i simpan di temp. 3. Bandingkan data temp dengan data yang ada di sebelah kiri satu per-satu. 4. Cek apakah data temp lebih kecil dari data s ebelah kiri. 5. Jika langkah nomor 3 bernilai “true” : lakukan. pergeseran data satu-persatu kemudian pada posisi yang tepat sisipkan data temp. 6. Ulangi langkah 1 sampai 4, hingga i sama dengan n. 7. SELESAI
C2. Pseudocode 1.
for j←2 to length[A]
2.
do key←A[j]
3.
Insert A[j] ke sekuens yang sudah disorting A[1…j-1]
4.
i← j-1
5.
while i>0 and A[i] > key
6. 7. 8.
do A[i+1] ←A[i] i ← i -1 A[i+1] ←key
C3. Contoh Pr ogr am #include
#include void main() { int x,a[14],i,t,j,k; cout<<"==== NILAI UNAS MTK ===="<>a[i]; } cout<<"\n\n data Sebelum diurutkan :"; for(i=1;i<=x;i++) { cout<<" "<a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } cout<<"\n # "<
} } cout<<"\n\n 3 Nilai Tertinggi dari data nilai siswa : "; for(i=1;i<=3;i++) { cout<<" "<
Contoh 2 : #include #include using namespace std ; int data[10],data2[10]; int n; void tukar(int a, int b) { int t; t = data[b]; data[b] = data[a]; data[a] = t; } void insertion_sort() { int temp,i,j; for(i=1;i<=n;i++)
{ temp = data[i]; j = i -1; while(data[j]>temp && j>=0) { data[j+1] = data[j]; j--; } data[j+1] = temp; } } int main() { cout<<"\t\t\t===PROGRAM INSERTION SORT===\n\n"<>n; cout<<"\n"; for(int i=1;i<=n;i++) { cout<<"Masukkan data ke "<>data[i]; data2[i]=data[i]; } insertion_sort(); cout<<"\n\n"; //tampilkan data cout<<"Data Setelah di Sort : "; for(int i=1; i<=n; i++) { cout<<" "<
Hasil Program :
2.4 Kelebihan dan kekurangan insertion 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 a. Banyaknya operasi yang diperlukan dalam mencari posisi yang tepat untuk elemen larik. b.Untuk larik yang jumlahnya besar ini tidak praktis. c.Jika list terurut terbalik sehingga setiap eksekusi dari perintah harus memindai dan mengganti seluruh bagian sebelum menyisipkan elemen berikutnya. d.Membutuhkan waktu O(n2) pada data yang tidak terurut, sehingga tidak cocok dalam pengurutan elemen dalam jumlah besar.
.
BAB III PENUTUP
DAFTAR PUSTAKA http://ricadamayantiputri12.blogspot.com/2014/01/insertion-sort.html http://www.dcc-dp.org/berita404-sort-atau-pengurutan-data--di-c--.html http://astronaut11.blogspot.com/2013/10/program-insertion-sort-dalam-bahasac.html