laporan praktikum sementara bab 8

11
LAPORAN PRAKTIKUM SEMENTARA ALGORITMA & STRUKTUR DATA 1 Disusun oleh : Nama : Joshua Steven Adrian NIM : 201301015 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Upload: mikha-joshua-steven-adrian

Post on 14-May-2017

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laporan Praktikum Sementara Bab 8

LAPORAN PRAKTIKUM SEMENTARA

ALGORITMA & STRUKTUR DATA 1

Disusun oleh :

Nama : Joshua Steven Adrian

NIM : 201301015

Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

PURWOKERTO 2014

Page 2: Laporan Praktikum Sementara Bab 8

2

BAB I

TEORI DASAR

Shell sort : mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak teretentu, lalu dilakukan pertukaran jika diperlukan.

Merge sort : suatu teknik pengurutan dengan menggabungkan setiap kali dua deretan elemen dan melakukan pengurutan terhadap elemen-elemen tersebut.

Mekanisme merge sort :

List harus dibagi dua menjadi sublist secara terurut. Setiap dua sublist yang berdekatan digabung hingga membentuk sublist yang lebih besar,

lalu tukar elemen yang terkecil di sebelah kiri dari elemen yang lebih besar. Proses terebut dilakukan berulang hingga sublist yang terbentuk hnya tinggal satu. Sublist yang terakhir terbentuk.

Page 3: Laporan Praktikum Sementara Bab 8

3

BAB II

PENJELASAN PROGRAM

Pada penjelasan program bab ini akan dijelaskan mengenai bagaimana melakukan sorting (shell & merge) pada Program 8.1, dan Program 8.2.

Listing Program 8.1

/* * biasa.cpp * * Created on: Apr 23, 2014 * Author: ACER */ #include <iostream> using namespace std; void shellsort(int a[], int n) { int j, i, m, mid; for(m=n/2;m>0;m/=2) { for(j=m;j<n;j++) { for(i=j-m;i>0;i-=m) { if(a[i+m]>=a[i]) break; else { mid=a[i]; a[i]=a[i+m]; a[i+m]=mid; } } } } } int main() { int a[10],i,n; cout<<"Inputkan banyak data yang akan disorting:"; cin>>n; for(i=0;i<n;i++) {

Page 4: Laporan Praktikum Sementara Bab 8

4

cout<<"Data "<<i+1<<"="; cin>>a[i]; } cout<<"Data sebelum sorting:"; for(i=0;i<n;i++) cout<<a[i]<<" "; shellsort(a,n); cout<<"\nData setelah sorting:"; for(i=0;i<n;i++) cout<<a[i]<<" "; return 0; } Output Program 8.1

Hasil output dari Program 8.1 adalah sebagai berikut :

Penjelasan Program 8.1

Berikut penjelasan dari Listing Program 8.1 :

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Page 5: Laporan Praktikum Sementara Bab 8

5

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud int i, j, iMin, n, Urut, Tmp, Arr[50]; adalah tipe data i, j, iMin, n, Urut, Tmp, Arr[50] berbentuk int/ integer (bilangan bulat).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

Yang dimaksud Urut = 1; adalah urut bernilai 1.

for(i=0; i<n; i++){ cout<<"masukkan data ke"<<i+1<<"="; cin>>Arr[i]; }

Merupakan statement for yang berfungsi untuk perulangan.

for(i=0; i<n-1; i++){ iMin = i; for(j=Urut; j<n; j++){ if(Arr[j] < Arr[iMin]){ iMin = j; if(Arr[i] != Arr[iMin]){ Tmp = Arr[i]; if(Arr[i] > Arr[iMin]) { Arr[i] = Arr[iMin]; Arr[iMin] = Tmp; } } } }

merupakan statement for dalam for & if dalam if.

Urut = Urut+1; }

Merupakan rumus urut.

cout<<"\nSetelah Pengurutan\n"; Merupakan title.

for(i=0; i<n; i++){ cout<<"Elemen ke"<<i+1<<"="<<Arr[i]<<endl;

Page 6: Laporan Praktikum Sementara Bab 8

6

} Merupakan statement for yang berfungsi untuk perulangan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Listing Program 8.2

/* * b.cpp * * Created on: Apr 23, 2014 * Author: ACER */ #include "iostream" using namespace std; int a[50]; void merge (int,int,int); void merge_sort(int low,int high){ int mid; if(low<high) { mid=(low+high)/2; merge_sort(low,mid); merge_sort(mid+1,high); merge(low,mid,high); } } void merge(int low, int mid, int high){ int h,i,j,b[50],k; h=low; i=low; j=mid+1; while((h<=mid)&&(j<=high)) { if(a[h]<=a[j]) { b[i]=a[h]; h++; } else{

Page 7: Laporan Praktikum Sementara Bab 8

7

b[i]=a[j]; j++; } i++; } if(h>mid) { for(k=j;k<=high;k++) { b[i]=a[k]; i++; } } else{ for(k=h;k<=mid;k++) { b[i]=a[k]; i++; } } for(k=low;k<=high;k++)a[k]=b[k]; } int main() { int num,i; cout<<"Inputkan banyak data yang akan diurutkan:"; cin>>num; cout<<endl; cout<<"Masukan ("<< num <<") data:"<<endl; for(i=1;i<=num;i++) { cin>>a[i]; } merge_sort(1,num); cout<<endl; cout<<"Setelah Pengurutan (Merge Sort) :"<<endl; for(i=1;i<=num;i++) cout<<a[i]<<" "; cout<<endl<<endl<<endl<<endl; return 0; }

Page 8: Laporan Praktikum Sementara Bab 8

8

Output Program 8.2

Hasil output dari Program 8.2 adalah sebagai berikut :

Penjelasan Program 8.2

Berikut penjelasan dari Listing Program 8.2 :

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud int i, j, n, Tmp, Arr[50]; adalah tipe data i, j, n, Tmp, Arr[50] berbentuk int/ integer (bilangan bulat).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

for(i=0;i<n;i++) { cout<<"masukan data ke"<<i+1<<"=";

Page 9: Laporan Praktikum Sementara Bab 8

9

cin>>arr[i]; }

Merupakan statement for yang berfungsi untuk perulangan.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

for(i=1;i<n;i++) { for(j=0;j<n-1;j++) { if(arr[j]>arr[j+1]) { tmp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } }

merupakan statement for dalam for & if dalam if.

cout<<"\nsetelah pengurutan data\n"; Merupakan title.

for(i=0;i<n;i++){ cout<<"\nelemen ke"<<i+1<<":"<<arr[i]<<endl; }

Merupakan statement for yang berfungsi untuk perulangan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Page 10: Laporan Praktikum Sementara Bab 8

10

BAB III

KESIMPULAN

Shell sort : mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak teretentu, lalu dilakukan pertukaran jika diperlukan.

Merge sort : suatu teknik pengurutan dengan menggabungkan setiap kali dua deretan elemen dan melakukan pengurutan terhadap elemen-elemen tersebut.

Jadi dengan melakukan sorting (shell & merge) seperti pada Program 8.1, Program 8.2 maka

dapat memudahkan pengguna untuk mengurutkan suatu data dengan jarak yang berbeda.

Page 11: Laporan Praktikum Sementara Bab 8

11

BAB IV

DAFTAR PUSTAKA

1. Modul praktikum algoritma & struktur data 1 (bab 8 sorting (shell & merge) ).

2. Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclips Indigo C ++.

Yogyakarta: CAPS (Center of Academic Publishing Service).