Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

30
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

description

Laporan Praktikum Resmi - Bab 6 - Sorting - Cintia Yosfin Samalle - 201301041

Transcript of Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

Page 1: 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

Page 2: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 3: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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;

Page 4: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 5: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 6: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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++){

Page 7: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 8: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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;

Page 9: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 10: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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++){

Page 11: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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

Page 12: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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; }

Page 13: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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;

Page 14: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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;

Page 15: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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(){

Page 16: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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

Page 17: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 18: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 19: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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;

Page 20: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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

{

Page 21: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 22: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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]) {

Page 23: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 24: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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; } } }

Page 25: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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++) {

Page 26: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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++.

Page 27: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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++){

Page 28: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 29: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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.

Page 30: Laporan Praktikum Resmi-Bab 6 Sorting (Selection, Bubble)

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)).