1 / 3

ALGORITMA DAN PEMROGRAMAN 2

ALGORITMA DAN PEMROGRAMAN 2. Modul 9. Oleh: Anis Cherid, M.T.I. PENGURUTAN SISIP ( INSERTION SORT ). Dibanding metode pengurutan gelembung ( bubble sort ) dan pengurutan pilih. ( selection sort ), pengurutan sisip merupakan teknik pengurutan yang paling mirip.

winona
Download Presentation

ALGORITMA DAN PEMROGRAMAN 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORITMA DAN PEMROGRAMAN 2 Modul 9 Oleh: Anis Cherid, M.T.I PENGURUTAN SISIP (INSERTION SORT) Dibanding metode pengurutan gelembung (bubble sort) dan pengurutan pilih (selection sort), pengurutan sisip merupakan teknik pengurutan yang paling mirip dengan teknik yang pada umumnya dipergunakan oleh manusia ketika mengurutkan sekumpulan data. Karena itu, algoritma pengurutan sisip lebih mudah kita pahami. Namun demikian, untuk mengimplementasikan pengurutan sisip ke dalam sebuah program, kita harus menggunakan algoritma yang lebih rumit dibanding pengurutan gelembung maupun pengurutan pilih. Jika kita memiliki 6 buah kartu yang masing-masing bernilai 15, 16, 01, 04, 12 dan 11, maka proses pengurutan yang kita lakukan adalah sebagai berikut: Kondisi awal: Kartu terurut dimulai dari 15 Langkah 1: Kartu berikut 16, kartu terurut terdiri dari 15, 16 Langkah 2: Kartu berikut 01, kartu terurut terdiri dari 01, 15, 16 Langkah 3: Kartu berikut 04, kartu terurut terdiri dari 01, 04, 15, 16 Langkah 4: Kartu berikut 12, kartu terurut terdiri dari 01, 04, 12, 15, 16 Langkah 5: Kartu berikut 11, kartu terurut terdiri dari 01, 04, 11, 12, 15, 16. Implementasi algorima pengurutan sisip (menaik) di atas, pada dasarnya dila- kukan dengan menyisipkan sebuah data baru ke dalam bagian array yang sudah terurut. Lokasi penyisipan yang tepat dilakukan dengan menelusuri satu persatu elemen dalam array yang sudah terurut, dimulai dari elemen yang datanya terbesar dan diakhiri pada elemen 1. Selama proses pencarian posisi yang tepat dilakukan, masing-masing dari data dalam elemen array yang sudah terurut digeser 1 elemen ke http://www.mercubuana.ac.id 1

  2. void insertionSort (int L[], int N){ int pass, nilai, posisiSisip, posisiBenar=0; /* elemen L[0] dianggap sudah terurut*/ for (pass = 1;pass<N;pass++){ posisiSisip = pass; nilai = L[posisiSisip]; posisiBenar = 0; /* cari posisi sisip yang benar sambil menggeser */ while (posisiSisip > 0 && !posisiBenar){ if (nilai < L[posisiSisip-1]){ L[posisiSisip] = L[posisiSisip-1]; /*geser elemen*/ --posisiSisip; } else { posisiBenar = 1; } } /* posisiSisip=0 or posisiBenar */ L[posisiSisip] = nilai; } } Program yang lebih lengkap untuk menyajikan kondisi array pada masing-masing posisi penyisipan, disajikan di bawah ini: #include <stdio.h> #include <conio.h> #include <time.h> #include <stdlib.h> #define MAX 17 tampilkanArray(int [], int, int, int); periksaLayar(int *); resetArray(int [], int); insertionSort(int [], int); void void void void void main(){ int N=0,arrPenampung[MAX]; do{ do { printf("Berapa jumlah elemen yang " "akan diurutkan (2 s/d 17, " "atau 0 untuk keluar): "); scanf("%d",&N); } while ((N<2 || N>MAX) && N!=0); if (N==0){ break; } resetArray(arrPenampung, N); insertionSort(arrPenampung, N); printf("Tekan sembarang kunci untuk " "mengurutkan array yang berbeda..."); getch(); clrscr(); } while (1); } http://www.mercubuana.ac.id 3

  3. (nilai<L[posisiSisip-1]?'<':'>'), L[posisiSisip-1],posisiSisip+1, (nilai<L[posisiSisip-1]? "salah":"benar")); if (nilai < L[posisiSisip-1]){ L[posisiSisip] = L[posisiSisip-1]; /*geser elemen*/ --posisiSisip; printf("geser elemen %d",posisiSisip+1); } else { posisiBenar = 1; printf("elemen %d = Nilai",posisiSisip+1); } printf("\n "); periksaLayar(&lineCounter); if (!posisiBenar){ tampilkanArray(L, N, posisiSisip, posisiSisip+1); periksaLayar(&lineCounter); } } /*posisiSisip=0 or posisiBenar*/ L[posisiSisip] = nilai; if (posisiSisip==0){ printf(" 1: Elemen terurut sudah diperiksa semua. " "Elemen 1 = Nilai\n "); periksaLayar(&lineCounter); } if (posisiSisip != pass){ tampilkanArray(L, N, -1, posisiSisip); } else { tampilkanArray(L, N, -1, -1); } periksaLayar(&lineCounter); } } MEMBANDINGKAN KECEPATAN BERBAGAI ALGORITMA SORTING Di bawah ini disajikan sebuah program yang membandingkan kecepatan beberapa algoritma sorting yang sudah dipelajari sejauh ini, yaitu bubble-sort, selection-sort dan insertion-sort. Dari ketiga algoritma ini, bubble-sort adalah algoritma yang paling tidak sama dengan cara manusia mengurutkan kumpulan nilai yang berbeda-beda. Sedangkan algoritma insertion-sort adalah yang paling mirip dengan cara yang digunakan oleh manusia untuk mengurutkan sekumpulan nilai tertentu. Untuk menguji kecepatan pengurutan dari ketiga algoritma ini (ditambah sebuah algoritma lain yang belum dipelajari, yaitu shell-sort), program yang dipergunakan adalah sebagai berikut: http://www.mercubuana.ac.id 5

More Related