Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)
description
Transcript of Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)
LAPORAN PRAKTIKUM RESMI
ALGORITMA & STRUKTUR DATA 1
SORTING (SELECTION, BUBBLE)
Disusun oleh :
Cintia Yosfin Samalle
201301041
Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom
JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO 2014
2
BAB I
TEORI DASAR
1. Pengantar
Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak
atau tidak teratur menjadi urut atau teratur menurut suatu aturan tertentu. Dalam melakukan
proses sorting terdapat beberapa hal yang mempengaruhi kecepatan proses sorting itu sendiri,
diantaranya adalah jumlah operasi perbandingan yang digunakan dan juga jumlah operasi
pemindahan data yang dilakukan. Makin banyak jumlah operasi perbandingan maka makin
lama proses sort itu berjalan. Begitu juga dengan operasi pemindahan data.
Jika di dalam suatu file tersimpan sejumlah record yang mempunyai volume cukup
besar, maka anda akan mengalami kesulitan saat mencari record atau data yang anda
inginkan apabila data tersebut tidak diurutkan terlebih dahulu. Dengan menggunakan teknik
Sorting maka permasalahan tersebut dapat dangan mudah diatasi.
2. Selection Sort
Selection sort mempunyai mekanisme sebagai berikut. Mula-mula suatu petunjuk
(posAwal), yang menunjukan posisi atau lokasi awal pengurutan data, diatur agar berisi
index pertama dalam larik. Kemudian dicari bilangan terkecil yang terletak antara posisi
sesudah yang ditunjuk oleh penunjuk tersebut hingga elemen yang terakhir dalam larik.
Lokasi bilangan tersebut ditunjuk oleh posMin. Selanjutnya, tukarkan nilai bilangan terkecil
tersebut dengan nilai yang ditunjuk oleh posAwal. Proses tersebut diulang dari posAwal
bernilai 0 hingga n-2, dengan n menyatakan jumlah elemen dalam larik.
3. Bubble Sort
Algoritma Bubble Sort memiliki ciri khusus, yaitu dengan melakukan pembandingan
dan apabila urutan data tidak terpenuhi maka dilakukan pertukaran. Sekalipun teknik ini
bukanlah termasuk jenis pertukaran yang cepat, teknikini juga bukan jenispertukaran yang
paling lambat.
3
BAB II
PENJELASAN PROGRAM
Pada penjelasan program bab ini akan dijelaskan mengenai bagaimana melakukan pemrograman C++ dengan menggunakan teknik sorting (selection, bubble) secara sederhana sesuai dengan modul praktikum.
Program Praktikum 6.1
/* * Praktikum6.1.cpp * * Created on: Apr 22, 2014 * Author: STIKOM32 */ #include <iostream> using namespace std; int main(){ int i, j, iMin, n, Urut, Tmp, Arr[50]; cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>n; Urut = 1; for(i=0; i<n; i++){ cout<<"Masukkan data ke " << i+1 << "="; cin>>Arr[i]; } 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; } } } } Urut = Urut+1; } cout<<"\nSetelah Pengurutan\n"; for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; } return 0;
4
}
Output Program 6.1
Penjelasan Program 6.1
Berukut penjelasan dari Listing Program 6.1 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. int main(),menyatakan tipe nilai balik fungsi main.
8. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
5
9. return 0 dimaksudkan untuk menyatakan nilai balik main.
10. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
11. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
12. \n digunakan untuk memindahkan kursor ke baris berikutnya.
13. int Tmp; Tmp penampung elemen array
14. int Arr[50]; Deklarasi array
15. Urut = 1;
for(i=0; i<n; i++){
cout<<"Masukkan data ke " << i+1 << "=";
cin>>Arr[i];
Untuk menginputkan array
16. for(i=0; i<n; i++){ Perulangan untuk inputan array 17. 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; } } } } Urut = Urut+1; }
Proses yang dilakukan saat sorting ascending dengan metode selection sort.
18. for(i=0; i<n-1; i++){ n-1 artinya elemen terakhir tidak dihitung. 19. iMin = i; set min = index array. 20. for(j=Urut; j<n; j++){ proses untuk melakukan perulangan sebagaipembanding. 21. if(Arr[j] < Arr[iMin]){ proses untuk mencari data yang kecil. 22. iMin = j; min diganti dengan yang lebih kecil. 23. if(Arr[i] != Arr[iMin]){ proses untuk mencari data yang berbeda.
6
24. Tmp = Arr[i]; tempat untuk menampung array yang lama. 25. if(Arr[i] > Arr[iMin]) proses ini akan dilakukan atau akan terjadi jika array yang lama
lebih besar daripada array yang baru. 26. Arr[i] = Arr[iMin]; jika pernyataan benar maka proses ini akan dilakukan, yaitu
mengganti array yang lama dengan array yang baru. 27. Arr[iMin] = Tmp; mengganti array baru dengan array lama. 28. Urut = Urut+1; variable urut nilainya akan ditambah dengan 1. 29. cout<<"\nSetelah Pengurutan\n";
for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; Untuk menampilkan tampilan hasil program.
Program 6.2
/* * Praktikum6.2.cpp * * Created on: Apr 22, 2014 * Author: STIKOM32 */ #include<iostream> using namespace std; int main() { int i , j , n; int tmp; int arr[50]; cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>n; for(i=0;i<n;i++) { cout<<"Masukkan data ke " << i+1 << "="; cin>>arr[i]; } 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; } } } cout<<"\nSetelah pengurutan data\n"; for(i=0;i<n;i++){
7
cout<<"\nElemen ke " << i+1 << ":" <<arr[i]<<endl; } return 0; }
Output Program 6.2
Penjelasan Program 6.2
Berukut penjelasan dari Listing Program 6.2 :
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
8
7. int main(),menyatakan tipe nilai balik fungsi main.
8. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
9. return 0 dimaksudkan untuk menyatakan nilai balik main.
10. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
11. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
12. \n digunakan untuk memindahkan kursor ke baris berikutnya.
Program Tugas Praktikum
Pada praktikum kali ini kita akan memodifikasi program 6.1 dan 6.2 dengan menggunakan tipe data abstrak (struct, typedef dan typedef & struct).
Program 6.1 dengan Menggunakan Struct
/* * Praktikum6.1.cpp * * Created on: Apr 28, 2014 * Author: STIKOM32 */ #include <iostream> using namespace std; struct bilangan { int i, j, iMin, n; int Urut; int Tmp; int Arr[50]; }; struct bilangan angka; int main(){ cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>angka.n; angka.Urut = 1;
9
for(angka.i=0; angka.i<angka.n; angka.i++){ cout<<"Masukkan data ke " << angka.i+1 << "="; cin>>angka.Arr[angka.i]; } for(angka.i=0; angka.i<angka.n-1; angka.i++){ angka.iMin = angka.i; for(angka.j=angka.Urut; angka.j<angka.n; angka,j++){ if(angka.Arr[angka.j] < angka.Arr[angka.iMin]){ angka.iMin = angka.j; if(angka.Arr[angka.i] != angka.Arr[angka.iMin]){ angka.Tmp = angka.Arr[i]; if(angka.Arr[angka.i] > angka.Arr[angka.iMin]) { angka.Arr[angka.i] = angka.Arr[angka.iMin]; angka.Arr[angka.iMin] = angka.Tmp; } } } } angka.Urut = angka.Urut+1; } cout<<"\nSetelah Pengurutan\n"; for(angka.i=0; angka.i<angka.n; angka.i++){ cout<<"Elemen ke " << angka.i+1 <<"="<<angka.Arr[angka.i]<<endl; } return 0; }
Output Program 6.1 Struct
Pembahasan Program 6.1 Struct
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
10
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. struct bilangan
{
int i, j, iMin, n; int Urut; int Tmp; int Arr[50]; }; struct bilangan angka
Bilangan merupakan member atau anggota dari struct, variable i, j, iMin, n, Urut, Tmp, Arr[50] merupakan variable yang bertipe data integer, angka merupakan bagian dalam member bilangan dalam struct.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
10. return 0 dimaksudkan untuk menyatakan nilai balik main.
11. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
12. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
13. \n digunakan untuk memindahkan kursor ke baris berikutnya.
14. int Tmp; Tmp penampung elemen array
15. int Arr[50]; Deklarasi array
16. Urut = 1;
for(i=0; i<n; i++){
11
cout<<"Masukkan data ke " << i+1 << "=";
cin>>Arr[i];
Untuk menginputkan array
17. for(i=0; i<n; i++){ Perulangan untuk inputan array 18. 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; } } } } Urut = Urut+1; }
Proses yang dilakukan saat sorting ascending dengan metode selection sort.
19. for(i=0; i<n-1; i++){ n-1 artinya elemen terakhir tidak dihitung. 20. iMin = i; set min = index array. 21. for(j=Urut; j<n; j++){ proses untuk melakukan perulangan sebagaipembanding. 22. if(Arr[j] < Arr[iMin]){ proses untuk mencari data yang kecil. 23. iMin = j; min diganti dengan yang lebih kecil. 24. if(Arr[i] != Arr[iMin]){ proses untuk mencari data yang berbeda. 25. Tmp = Arr[i]; tempat untuk menampung array yang lama. 26. if(Arr[i] > Arr[iMin]) proses ini akan dilakukan atau akan terjadi jika array yang lama
lebih besar daripada array yang baru. 27. Arr[i] = Arr[iMin]; jika pernyataan benar maka proses ini akan dilakukan, yaitu
mengganti array yang lama dengan array yang baru. 28. Arr[iMin] = Tmp; mengganti array baru dengan array lama. 29. Urut = Urut+1; variable urut nilainya akan ditambah dengan 1. 30. cout<<"\nSetelah Pengurutan\n";
for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; Untuk menampilkan tampilan hasil program. Program 6.1 dengan Menggunakan Typedef
12
/* * Praktikum6.1.cpp * * Created on: Apr 28, 2014 * Author: STIKOM32 */ #include <iostream> using namespace std; typedef int data; int main(){ data i, j, iMin, n; data Urut; data Tmp; data Arr[50]; cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>n; Urut = 1; for(i=0; i<n; i++){ cout<<"Masukkan data ke " << i+1 << "="; cin>>Arr[i]; } 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; } } } } Urut = Urut+1; } cout<<"\nSetelah Pengurutan\n"; for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; } return 0; }
13
Output Program 6.1 Typedef
Pembahasan Program 6.1 Typedef
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. typedef int data; Typedef biasanya digunakan untuk memberikan nama alias untuk suatu tipe data.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. data i, j, iMin, n;
data Urut;
14
data Tmp;
data Arr[50];
Setelah int ditypedefkan menjadi data (int diberikan nama alias yaitu data), maka pendeklarasian variable yang menggunakan tipe data int (integer) sekarang menggunakan data.
10. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
11. return 0 dimaksudkan untuk menyatakan nilai balik main.
12. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
13. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
14. \n digunakan untuk memindahkan kursor ke baris berikutnya.
15. int Tmp; Tmp penampung elemen array
16. int Arr[50]; Deklarasi array
17. Urut = 1;
for(i=0; i<n; i++){
cout<<"Masukkan data ke " << i+1 << "=";
cin>>Arr[i];
Untuk menginputkan array
18. for(i=0; i<n; i++){ Perulangan untuk inputan array 19. 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; } } } } Urut = Urut+1;
15
} Proses yang dilakukan saat sorting ascending dengan metode selection sort.
20. for(i=0; i<n-1; i++){ n-1 artinya elemen terakhir tidak dihitung. 21. iMin = i; set min = index array. 22. for(j=Urut; j<n; j++){ proses untuk melakukan perulangan sebagaipembanding. 23. if(Arr[j] < Arr[iMin]){ proses untuk mencari data yang kecil. 24. iMin = j; min diganti dengan yang lebih kecil. 25. if(Arr[i] != Arr[iMin]){ proses untuk mencari data yang berbeda. 26. Tmp = Arr[i]; tempat untuk menampung array yang lama. 27. if(Arr[i] > Arr[iMin]) proses ini akan dilakukan atau akan terjadi jika array yang lama
lebih besar daripada array yang baru. 28. Arr[i] = Arr[iMin]; jika pernyataan benar maka proses ini akan dilakukan, yaitu
mengganti array yang lama dengan array yang baru. 29. Arr[iMin] = Tmp; mengganti array baru dengan array lama. 30. Urut = Urut+1; variable urut nilainya akan ditambah dengan 1. 31. cout<<"\nSetelah Pengurutan\n";
for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; Untuk menampilkan tampilan hasil program. Program 6.1 dengan Menggunakan Struct – Typedef
/* * Praktikum6.1.cpp * * Created on: Apr 28, 2014 * Author: STIKOM32 */ #include <iostream> using namespace std; typedef struct bilangan { int i, j, iMin, n; int Urut; int Tmp; int Arr[50]; }; struct bilangan angka; int main(){
16
cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>angka.n; angka.Urut = 1; for(angka.i=0; angka.i<angka.n; angka.i++){ cout<<"Masukkan data ke " << angka.i+1 << "="; cin>>angka.Arr[angka.i]; } for(angka.i=0; angka.i<angka.n-1; angka.i++){ angka.iMin = angka.i; for(angka.j=angka.Urut; angka.j<angka.n; angka,j++){ if(angka.Arr[angka.j] < angka.Arr[angka.iMin]){ angka.iMin = angka.j; if(angka.Arr[angka.i] != angka.Arr[angka.iMin]){ angka.Tmp = angka.Arr[i]; if(angka.Arr[angka.i] > angka.Arr[angka.iMin]) { angka.Arr[angka.i] = angka.Arr[angka.iMin]; angka.Arr[angka.iMin] = angka.Tmp; } } } } angka.Urut = angka.Urut+1; } cout<<"\nSetelah Pengurutan\n"; for(angka.i=0; angka.i<angka.n; angka.i++){ cout<<"Elemen ke " << angka.i+1 <<"="<<angka.Arr[angka.i]<<endl; } return 0; }
Output Program 6.1 Struct – Typedef
17
Pembahasan Program 6.1 Struct - Typedef
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. typedef struct bilangan
{
int i, j, iMin, n; int Urut; int Tmp; int Arr[50]; }; struct bilangan angka;
Typedef biasanya digunakan untuk memberikan nama alias untuk suatu tipe data. Bilangan merupakan member atau anggota dari struct, variable i, j, iMin, n, Urut, Tmp, Arr[50] merupakan variable yang bertipe data integer, angka merupakan bagian dalam member bilangan dalam struct.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
10. return 0 dimaksudkan untuk menyatakan nilai balik main.
11. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
12. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
13. \n digunakan untuk memindahkan kursor ke baris berikutnya.
18
14. int Tmp; Tmp penampung elemen array
15. int Arr[50]; Deklarasi array
16. Urut = 1;
for(i=0; i<n; i++){
cout<<"Masukkan data ke " << i+1 << "=";
cin>>Arr[i];
Untuk menginputkan array
17. for(i=0; i<n; i++){ Perulangan untuk inputan array 18. 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; } } } } Urut = Urut+1; }
Proses yang dilakukan saat sorting ascending dengan metode selection sort.
19. for(i=0; i<n-1; i++){ n-1 artinya elemen terakhir tidak dihitung. 20. iMin = i; set min = index array. 21. for(j=Urut; j<n; j++){ proses untuk melakukan perulangan sebagaipembanding. 22. if(Arr[j] < Arr[iMin]){ proses untuk mencari data yang kecil. 23. iMin = j; min diganti dengan yang lebih kecil. 24. if(Arr[i] != Arr[iMin]){ proses untuk mencari data yang berbeda. 25. Tmp = Arr[i]; tempat untuk menampung array yang lama. 26. if(Arr[i] > Arr[iMin]) proses ini akan dilakukan atau akan terjadi jika array yang lama
lebih besar daripada array yang baru. 27. Arr[i] = Arr[iMin]; jika pernyataan benar maka proses ini akan dilakukan, yaitu
mengganti array yang lama dengan array yang baru. 28. Arr[iMin] = Tmp; mengganti array baru dengan array lama. 29. Urut = Urut+1; variable urut nilainya akan ditambah dengan 1.
19
30. cout<<"\nSetelah Pengurutan\n"; for(i=0; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<Arr[i]<<endl; Untuk menampilkan tampilan hasil program. Program 6.2 dengan Menggunakan Struct
/* * Praktikum6.2.cpp * * Created on: Apr 28, 2014 * Author: STIKOM32 */ #include<iostream> using namespace std; struct bilangan { int i, j, n; int tmp; int arr[50]; }; struct bilangan x; int main() { cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>x.n; for(x.i=0;x.i<x.n;x.i++) { cout<<"Masukkan data ke " << x.i+1 << "="; cin>>x.arr[x.i]; } for(x.i=1;x.i<x.n;x.i++) { for(x.j=0;x.j<x.n-1;x.j++) { if(x.arr[x.j]>x.arr[x.j+1]) { x.tmp = x.arr[x.j]; x.arr[x.j]=x.arr[x.j+1]; x.arr[x.j+1]=x.tmp; } } } cout<<"\nSetelah pengurutan data\n"; for(x.i=0;x.i<x.n;x.i++){ cout<<"\nElemen ke " << x.i+1 << ":" <<x.arr[x.i]<<endl;
20
} return 0; }
Output Program 6.2 Struct
Penjelasan Program 6.2 Struct
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. struct bilangan
{
21
int i, j, n; int tmp; int arr[50]; }; struct bilangan x; Bilangan merupakan member atau anggota dari struct, variable i, j, n, tmp, arr[50] merupakan variable yang bertipe data integer, x merupakan bagian dalam member bilangan dalam struct.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
10. return 0 dimaksudkan untuk menyatakan nilai balik main.
11. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
12. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
13. \n digunakan untuk memindahkan kursor ke baris berikutnya.
14. int tmp; Tmp penampung elemen array
15. int arr[50]; Deklarasi array
16. for(x.i=0; x.i<x.n; x.i++){
cout <<"Masukkan data ke "<<x.i+1<<"=";
cin >>x.arr[x.i];
}
Untuk menginputkan array
17. for(x.i=1; x.i<x.n; x.i++){ Perulangan untuk inputan array 18. for(x.i=x.1; i<x.n-1; x.i++){
for(x.j=0; x.j<x.n-1; x.j++){ if(x.arr[x.j] > x.arr[x.j+1]){ x.tmp = x.arr[x.j]; x.arr[x.i] = x.arr[x.j+1]; x.arr[x.j+1] = x.tmp; } } }
Proses yang dilakukan saat sorting ascending dengan metode bubble sort.
19. for(x.i=1; x.i<x.n; x.i++){ perulangan untuk mengakses array.
22
20. for(x.j=0; x.j<x.n-1; x.j++){ proses untuk melakukan perulangan sebagai pembanding.
21. if(x.arr[x.j] > x.arr[x.j+1]){ proses untuk mencocokkan data 1 dengan data yang disebelahnya.
22. x.tmp = x.arr[x.j]; tempat untuk menampung array yang lama. 23. x.arr[x.j] = x.arr[x.j+1]; jika pernyataan benar maka proses ini akan
dilakukan, yaitu mengganti array yang lama dengan array yang baru. 24. x.arr[x.j+1] = x.tmp; proses untuk menukar array baru dengan array lama. 25. cout<<"\nSetelah Pengurutan\n";
for(x.i=1; x.i<x.n; x.i++){ cout<<"Elemen ke " << x.i+1 <<"="<<x.arr[x.i]<<endl; Untuk menampilkan tampilan hasil program.
26. for(x.i=1; x.i<x.n; x.i++){ proses perulangan untuk tampilan array. Program 6.2 dengan Menggunakan Typedef
/* * Praktikum6.2.cpp * * Created on: Apr 22, 2014 * Author: STIKOM32 */ #include<iostream> using namespace std; typedef int c; int main() { c i, j, n; c tmp; c arr[50]; cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>n; for(i=0;i<n;i++) { cout<<"Masukkan data ke " << i+1 << "="; cin>>arr[i]; } for(i=1;i<n;i++) { for(j=0;j<n-1;j++) { if(arr[j]>arr[j+1]) {
23
tmp = arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } } cout<<"\nSetelah pengurutan data\n"; for(i=0;i<n;i++){ cout<<"\nElemen ke " << i+1 << ":" <<arr[i]<<endl; } return 0; }
Output Program 6.2 Typedef
Pembahasan Program 6.2 Typedef
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
24
7. typedef int c; Typedef biasanya digunakan untuk memberikan nama alias untuk suatu tipe c.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. { c i, j, n; c tmp; c arr[50]; Setelah int ditypedefkan menjadi c (int diberikan nama alias yaitu c), maka pendeklarasian variable yang menggunakan tipe data int (integer) sekarang menggunakan nama c.
10. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
11. return 0 dimaksudkan untuk menyatakan nilai balik main.
12. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
13. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
14. \n digunakan untuk memindahkan kursor ke baris berikutnya.
15. int tmp; Tmp penampung elemen array
16. int arr[50]; Deklarasi array
17. for(i=0; i<n; i++){
cout <<"Masukkan data ke "<<i+1<<"=";
cin >>Arr[i];
}
Untuk menginputkan array
18. for(i=1; i<n; i++){ Perulangan untuk inputan array 19. for(i=1; i<n-1; i++){
for(j=0; j<n-1; j++){ if(Arr[j] > Arr[j+1]){ tmp = arr[j]; arr[i] = arr[j+1]; arr[j+1] = tmp; } } }
25
Proses yang dilakukan saat sorting ascending dengan metode bubble sort.
20. for(i=1; i<n; i++){ perulangan untuk mengakses array. 21. for(j=0; j<n-1; j++){ proses untuk melakukan perulangan sebagai pembanding. 22. if(arr[j] > arr[j+1]){ proses untuk mencocokkan data 1 dengan data yang
disebelahnya. 23. tmp = arr[j]; tempat untuk menampung array yang lama. 24. arr[j] = arr[j+1]; jika pernyataan benar maka proses ini akan dilakukan, yaitu
mengganti array yang lama dengan array yang baru. 25. arr[j+1] = tmp; proses untuk menukar array baru dengan array lama. 26. cout<<"\nSetelah Pengurutan\n";
for(i=1; i<n; i++){ cout<<"Elemen ke " << i+1 <<"="<<arr[i]<<endl; Untuk menampilkan tampilan hasil program.
27. for(i=1; i<n; i++){ proses perulangan untuk tampilan array.
Program 6.2 dengan Menggunakan Struct – Typedef
/* * Praktikum6.2.cpp * * Created on: Apr 28, 2014 * Author: STIKOM32 */ #include<iostream> using namespace std; typedef struct bilangan { int i, j, n; int tmp; int arr[50]; }; struct bilangan x; int main() { cout<<"Inputkan banyak data yang akan diurutkan :"; cin>>x.n; for(x.i=0;x.i<x.n;x.i++) { cout<<"Masukkan data ke " << x.i+1 << "="; cin>>x.arr[x.i]; } for(x.i=1;x.i<x.n;x.i++) {
26
for(x.j=0;x.j<x.n-1;x.j++) { if(x.arr[x.j]>x.arr[x.j+1]) { x.tmp = x.arr[x.j]; x.arr[x.j]=x.arr[x.j+1]; x.arr[x.j+1]=x.tmp; } } } cout<<"\nSetelah pengurutan data\n"; for(x.i=0;x.i<x.n;x.i++){ cout<<"\nElemen ke " << x.i+1 << ":" <<x.arr[x.i]<<endl; } return 0; }
Output Program 6.2 Struct – Typedef
Pembahasan Program 6.2 Struct - Typedef
1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai
3. <iostream> untuk memanggil fungsi cout dan cin dalam C++.
4. using namespace std; adalah standar deviasi dalam sebuah program dalam bahasa pemrograman C++.
27
5. Tanda kurung kurawal {} dimaksudkan untuk mengawali dan mengakhiri bagian main.
6. Tanda ; digunakan untuk mengakhiri sebuah pernyataan.
7. typedef struct bilangan
{
int i, j, n; int tmp; int arr[50]; }; struct bilangan x; Typedef biasanya digunakan untuk memberikan nama alias untuk suatu tipe data. Bilangan merupakan member atau anggota dari struct, variable i, j, n, tmp, arr[50] merupakan variable yang bertipe data integer, x merupakan bagian dalam member bilangan dalam struct.
8. int main(),menyatakan tipe nilai balik fungsi main.
9. cout dipakai untuk menampilkan teks/data ke layar monitor sehingga menjadi output.
10. return 0 dimaksudkan untuk menyatakan nilai balik main.
11. Tanda << adalah tanda spesifik dalam cout. Tanda tersebut menyatakan bahwa nilai di kanannya akan dirim ke layar.
12. cout dan cin disini maksudnya adalah sebagai fungsi input dan output sebuah program.
13. \n digunakan untuk memindahkan kursor ke baris berikutnya.
14. int tmp; Tmp penampung elemen array
15. int arr[50]; Deklarasi array
16. for(x.i=0; x.i<x.n; x.i++){
cout <<"Masukkan data ke "<<x.i+1<<"=";
cin >>x.arr[x.i];
}
Untuk menginputkan array
17. for(x.i=1; x.i<x.n; x.i++){ Perulangan untuk inputan array 18. for(x.i=x.1; i<x.n-1; x.i++){
for(x.j=0; x.j<x.n-1; x.j++){
28
if(x.arr[x.j] > x.arr[x.j+1]){ x.tmp = x.arr[x.j]; x.arr[x.i] = x.arr[x.j+1]; x.arr[x.j+1] = x.tmp; } } }
Proses yang dilakukan saat sorting ascending dengan metode bubble sort.
19. for(x.i=1; x.i<x.n; x.i++){ perulangan untuk mengakses array. 20. for(x.j=0; x.j<x.n-1; x.j++){ proses untuk melakukan perulangan sebagai
pembanding. 21. if(x.arr[x.j] > x.arr[x.j+1]){ proses untuk mencocokkan data 1 dengan data yang
disebelahnya. 22. x.tmp = x.arr[x.j]; tempat untuk menampung array yang lama. 23. x.arr[x.j] = x.arr[x.j+1]; jika pernyataan benar maka proses ini akan
dilakukan, yaitu mengganti array yang lama dengan array yang baru. 24. x.arr[x.j+1] = x.tmp; proses untuk menukar array baru dengan array lama. 25. cout<<"\nSetelah Pengurutan\n";
for(x.i=1; x.i<x.n; x.i++){ cout<<"Elemen ke " << x.i+1 <<"="<<x.arr[x.i]<<endl; Untuk menampilkan tampilan hasil program.
26. for(x.i=1; x.i<x.n; x.i++){ proses perulangan untuk tampilan array.
29
BAB III
KESIMPULAN
Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak atau
tidak teratur menjadi urut atau teratur menurut suatu aturan tertentu. Dalam melakukan proses
sorting terdapat beberapa hal yang mempengaruhi kecepatan proses sorting itu sendiri,
diantaranya adalah jumlah operasi perbandingan yang digunakan dan juga jumlah operasi
pemindahan data yang dilakukan. Makin banyak jumlah operasi perbandingan maka makin lama
proses sort itu berjalan. Begitu juga dengan operasi pemindahan data.
Sorting dibagi menajdi beberapa bagian, diantaranya :
Selection sort mempunyai mekanisme sebagai berikut: Mula-mula suatu petunjuk (posAwal),
yang menunjukan posisi atau lokasi awal pengurutan data, diatur agar berisi index pertama
dalam larik. Kemudian dicari bilangan terkecil yang terletak antara posisi sesudah yang
ditunjuk oleh penunjuk tersebut hingga elemen yang terakhir dalam larik. Lokasi bilangan
tersebut ditunjuk oleh posMin.
Bubble Sort memiliki ciri khusus, yaitu dengan melakukan pembandingan dan apabila urutan
data tidak terpenuhi maka dilakukan pertukaran.
30
DAFTAR PUSTAKA
1. Ardhana, YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclups Indigo C ++. Yogyakarta: CAPS (Center of Academic Publishing Service).
2. Kadir, Abdul. 2012. Buku Pintar C++ Untuk Pemula. Yogyakarta: MediaKom.
3. Modul praktikum algoritma dan struktur data 1 (bab 6 sorting (selection, bubble)).