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. J ika 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 / * * Pr akt i kum6. 1. cpp * * Cr eat ed on: Apr 22, 2014 * Aut hor : STI KOM32 */
#include <i ost r eam> using namespace st d; int main( ) { int i , j , i Mi n, n, Ur ut , Tmp, Ar r [ 50] ; cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>n; Ur ut = 1; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 << "="; ci n>>Ar r [ i ] ; } for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { if( Ar r [ j ] < Ar r [ i Mi n] ) { i Mi n = j ; if( Ar r [ i ] ! = Ar r [ i Mi n] ) { Tmp = Ar r [ i ] ; if( Ar r [ i ] > Ar r [ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +1; } cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r [ 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. i nt Tmp; Tmp penampung elemen array 14. i nt Ar r [ 50] ; Deklarasi array 15. Ur ut = 1; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 <<"="; ci n>>Ar r [ i ] ; Untuk menginputkan array 16. for( i =0; i <n; i ++) { Perulangan untuk inputan array 17. for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { i f( Ar r [ j ] < Ar r[ i Mi n] ) { i Mi n = j ; i f( Ar r [ i ] ! = Arr [ i Mi n] ) { Tmp = Ar r [ i ] ; i f( Ar r [ i ] > Ar r[ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +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. i Mi n = i ; set min =index array. 20. for( j =Ur ut ; j <n; j ++) { proses untuk melakukan perulangan sebagaipembanding. 21. i f( Ar r [ j ] < Ar r[ i Mi n] ) { proses untuk mencari data yang kecil. 22. i Mi n = j ; min diganti dengan yang lebih kecil. 23. i f( Ar r [ i ] ! = Arr [ i Mi n] ) { proses untuk mencari data yang berbeda. 6
24. Tmp = Ar r [ i ] ; tempat untuk menampung array yang lama. 25. i f( Ar r [ i ] > Ar r[ i Mi n] ) proses ini akan dilakukan atau akan terjadi jika array yang lama lebih besar daripada array yang baru. 26. Ar r [ i ] = Ar r [ i Mi n] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 27. Ar r [ i Mi n] = Tmp; mengganti array baru dengan array lama. 28. Ur ut = Ur ut +1; variable urut nilainya akan ditambah dengan 1. 29. cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r[ i ] <<endl ; Untuk menampilkan tampilan hasil program.
Program 6.2 / * * Pr akt i kum6. 2. cpp * * Cr eat ed on: Apr 22, 2014 * Aut hor : STI KOM32 */
#include<i ost r eam> using namespace st d; int main( ) { int i , j , n; int t mp; int ar r [ 50] ; cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>n; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 << "="; ci n>>ar r [ i ] ; } for( i =1; i <n; i ++) { for( j =0; j <n- 1; j ++) { if( ar r [ j ] >ar r [ j +1] ) { t mp = ar r [ j ] ; ar r [ j ] =ar r [ j +1] ; ar r [ j +1] =t mp; } } } cout <<"\ nSet el ah pengur ut an dat a\ n"; for( i =0; i <n; i ++) { 7
cout <<"\ nEl emen ke " << i +1 << ": " <<ar r [ 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
/ * * Pr akt i kum6. 1. cpp * * Cr eat ed on: Apr 28, 2014 * Aut hor : STI KOM32 */
#include <i ost r eam> using namespace st d;
struct bi l angan { int i , j , i Mi n, n; int Ur ut ; int Tmp; int Ar r [ 50] ;
}; struct bi l angan angka;
int main( ) { cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>angka. n; angka. Ur ut = 1; 9
for( angka. i =0; angka. i <angka. n; angka. i ++) { cout <<"Masukkan dat a ke " << angka. i +1 << "="; ci n>>angka. Ar r [ angka. i ] ; } for( angka. i =0; angka. i <angka. n- 1; angka. i ++) { angka. i Mi n = angka. i ; for( angka. j =angka. Ur ut ; angka. j <angka. n; angka, j ++) { if( angka. Ar r [ angka. j ] < angka. Ar r [ angka. i Mi n] ) { angka. i Mi n = angka. j ; if( angka. Ar r [ angka. i ] ! = angka. Ar r [ angka. i Mi n] ) { angka. Tmp = angka. Ar r [ i ] ; if( angka. Ar r [ angka. i ] > angka. Ar r [ angka. i Mi n] ) { angka. Ar r [ angka. i ] = angka. Ar r [ angka. i Mi n] ; angka. Ar r [ angka. i Mi n] = angka. Tmp; } } } } angka. Ur ut = angka. Ur ut +1; } cout <<"\ nSet el ah Pengur ut an\ n"; for( angka. i =0; angka. i <angka. n; angka. i ++) { cout <<"El emen ke " << angka. i +1 <<"="<<angka. Ar r [ 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 bi l angan { int i , j , i Mi n, n; int Ur ut ; int Tmp; int Ar r [ 50] ; }; struct bi l angan 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. i nt Tmp; Tmp penampung elemen array 15. i nt Ar r [ 50] ; Deklarasi array 16. Ur ut = 1; for( i =0; i <n; i ++) { 11
cout <<"Masukkan dat a ke " << i +1 <<"="; ci n>>Ar r [ i ] ; Untuk menginputkan array 17. for( i =0; i <n; i ++) { Perulangan untuk inputan array 18. for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { i f( Ar r [ j ] < Ar r[ i Mi n] ) { i Mi n = j ; i f( Ar r [ i ] ! = Arr [ i Mi n] ) { Tmp = Ar r [ i ] ; i f( Ar r [ i ] > Ar r[ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +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. i Mi n = i ; set min =index array. 21. for( j =Ur ut ; j <n; j ++) { proses untuk melakukan perulangan sebagaipembanding. 22. i f( Ar r [ j ] < Ar r[ i Mi n] ) { proses untuk mencari data yang kecil. 23. i Mi n = j ; min diganti dengan yang lebih kecil. 24. i f( Ar r [ i ] ! = Arr [ i Mi n] ) { proses untuk mencari data yang berbeda. 25. Tmp = Ar r [ i ] ; tempat untuk menampung array yang lama. 26. i f( Ar r [ i ] > Ar r[ i Mi n] ) proses ini akan dilakukan atau akan terjadi jika array yang lama lebih besar daripada array yang baru. 27. Ar r [ i ] = Ar r [ i Mi n] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 28. Ar r [ i Mi n] = Tmp; mengganti array baru dengan array lama. 29. Ur ut = Ur ut +1; variable urut nilainya akan ditambah dengan 1. 30. cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r[ i ] <<endl ; Untuk menampilkan tampilan hasil program.
Program 6.1 dengan Menggunakan Typedef 12
/ * * Pr akt i kum6. 1. cpp * * Cr eat ed on: Apr 28, 2014 * Aut hor : STI KOM32 */
#include <i ost r eam> using namespace st d;
typedef int dat a;
int main( ) { dat a i , j , i Mi n, n; dat a Ur ut ; dat a Tmp; dat a Ar r [ 50] ;
cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>n;
Ur ut = 1; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 << "="; ci n>>Ar r [ i ] ; } for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { if( Ar r [ j ] < Ar r [ i Mi n] ) { i Mi n = j ; if( Ar r [ i ] ! = Ar r [ i Mi n] ) { Tmp = Ar r [ i ] ; if( Ar r [ i ] > Ar r [ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +1; } cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r [ 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 dat a; Typedef biasanya digunakan untuk memberikan nama alias untuk suatu tipe data. 8. int main(),menyatakan tipe nilai balik fungsi main. 9. dat a i , j , i Mi n, n; dat a Ur ut ; 14
dat a Tmp; dat a Ar r [ 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. i nt Tmp; Tmp penampung elemen array 16. i nt Ar r [ 50] ; Deklarasi array 17. Ur ut = 1; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 <<"="; ci n>>Ar r [ i ] ; Untuk menginputkan array 18. for( i =0; i <n; i ++) { Perulangan untuk inputan array 19. for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { i f( Ar r [ j ] < Ar r[ i Mi n] ) { i Mi n = j ; i f( Ar r [ i ] ! = Arr [ i Mi n] ) { Tmp = Ar r [ i ] ; i f( Ar r [ i ] > Ar r[ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +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. i Mi n = i ; set min =index array. 22. for( j =Ur ut ; j <n; j ++) { proses untuk melakukan perulangan sebagaipembanding. 23. i f( Ar r [ j ] < Ar r[ i Mi n] ) { proses untuk mencari data yang kecil. 24. i Mi n = j ; min diganti dengan yang lebih kecil. 25. i f( Ar r [ i ] ! = Arr [ i Mi n] ) { proses untuk mencari data yang berbeda. 26. Tmp = Ar r [ i ] ; tempat untuk menampung array yang lama. 27. i f( Ar r [ i ] > Ar r[ i Mi n] ) proses ini akan dilakukan atau akan terjadi jika array yang lama lebih besar daripada array yang baru. 28. Ar r [ i ] = Ar r [ i Mi n] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 29. Ar r [ i Mi n] = Tmp; mengganti array baru dengan array lama. 30. Ur ut = Ur ut +1; variable urut nilainya akan ditambah dengan 1. 31. cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r[ i ] <<endl ; Untuk menampilkan tampilan hasil program.
Program 6.1 dengan Menggunakan Struct Typedef
/ * * Pr akt i kum6. 1. cpp * * Cr eat ed on: Apr 28, 2014 * Aut hor : STI KOM32 */
#include <i ost r eam> using namespace st d;
typedef struct bi l angan { int i , j , i Mi n, n; int Ur ut ; int Tmp; int Ar r [ 50] ;
}; struct bi l angan angka;
int main( ) { 16
cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>angka. n; angka. Ur ut = 1; for( angka. i =0; angka. i <angka. n; angka. i ++) { cout <<"Masukkan dat a ke " << angka. i +1 << "="; ci n>>angka. Ar r [ angka. i ] ; } for( angka. i =0; angka. i <angka. n- 1; angka. i ++) { angka. i Mi n = angka. i ; for( angka. j =angka. Ur ut ; angka. j <angka. n; angka, j ++) { if( angka. Ar r [ angka. j ] < angka. Ar r [ angka. i Mi n] ) { angka. i Mi n = angka. j ; if( angka. Ar r [ angka. i ] ! = angka. Ar r [ angka. i Mi n] ) { angka. Tmp = angka. Ar r [ i ] ; if( angka. Ar r [ angka. i ] > angka. Ar r [ angka. i Mi n] ) { angka. Ar r [ angka. i ] = angka. Ar r [ angka. i Mi n] ; angka. Ar r [ angka. i Mi n] = angka. Tmp; } } } } angka. Ur ut = angka. Ur ut +1; } cout <<"\ nSet el ah Pengur ut an\ n"; for( angka. i =0; angka. i <angka. n; angka. i ++) { cout <<"El emen ke " << angka. i +1 <<"="<<angka. Ar r [ 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 bi l angan { int i , j , i Mi n, n; int Ur ut ; int Tmp; int Ar r [ 50] ; }; struct bi l angan 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. i nt Tmp; Tmp penampung elemen array 15. i nt Ar r [ 50] ; Deklarasi array 16. Ur ut = 1; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 <<"="; ci n>>Ar r [ i ] ; Untuk menginputkan array 17. for( i =0; i <n; i ++) { Perulangan untuk inputan array 18. for( i =0; i <n- 1; i ++) { i Mi n = i ; for( j =Ur ut ; j <n; j ++) { i f( Ar r [ j ] < Ar r[ i Mi n] ) { i Mi n = j ; i f( Ar r [ i ] ! = Arr [ i Mi n] ) { Tmp = Ar r [ i ] ; i f( Ar r [ i ] > Ar r[ i Mi n] ) { Ar r [ i ] = Ar r [ i Mi n] ; Ar r [ i Mi n] = Tmp; } } } } Ur ut = Ur ut +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. i Mi n = i ; set min =index array. 21. for( j =Ur ut ; j <n; j ++) { proses untuk melakukan perulangan sebagaipembanding. 22. i f( Ar r [ j ] < Ar r[ i Mi n] ) { proses untuk mencari data yang kecil. 23. i Mi n = j ; min diganti dengan yang lebih kecil. 24. i f( Ar r [ i ] ! = Arr [ i Mi n] ) { proses untuk mencari data yang berbeda. 25. Tmp = Ar r [ i ] ; tempat untuk menampung array yang lama. 26. i f( Ar r [ i ] > Ar r[ i Mi n] ) proses ini akan dilakukan atau akan terjadi jika array yang lama lebih besar daripada array yang baru. 27. Ar r [ i ] = Ar r [ i Mi n] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 28. Ar r [ i Mi n] = Tmp; mengganti array baru dengan array lama. 29. Ur ut = Ur ut +1; variable urut nilainya akan ditambah dengan 1. 19
30. cout <<"\ nSet el ah Pengur ut an\ n"; for( i =0; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<Ar r[ i ] <<endl ; Untuk menampilkan tampilan hasil program.
Program 6.2 dengan Menggunakan Struct
/ * * Pr akt i kum6. 2. cpp * * Cr eat ed on: Apr 28, 2014 * Aut hor : STI KOM32 */
#include<i ost r eam> using namespace st d;
struct bi l angan { int i , j , n; int t mp; int ar r [ 50] ;
}; struct bi l angan x;
int main( ) { cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>x. n; for( x. i =0; x. i <x. n; x. i ++) { cout <<"Masukkan dat a ke " << x. i +1 << "="; ci n>>x. ar r [ 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. ar r [ x. j ] >x. ar r [ x. j +1] ) { x. t mp = x. ar r [ x. j ] ; x. ar r [ x. j ] =x. ar r [ x. j +1] ; x. ar r [ x. j +1] =x. t mp; } } } cout <<"\ nSet el ah pengur ut an dat a\ n"; for( x. i =0; x. i <x. n; x. i ++) { cout <<"\ nEl emen ke " << x. i +1 << ": " <<x. ar r [ 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 bi l angan { 21
int i , j , n; int t mp; int ar r [ 50] ; }; struct bi l angan 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. i nt t mp; Tmp penampung elemen array 15. i nt ar r [ 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 ++) { i f( x. ar r [ x. j ] >x. ar r [ x. j +1] ) { x. t mp = x. ar r [ x. j ] ; x. ar r [ x. i ] = x. ar r [ x. j +1] ; x. ar r [ x. j +1] =x. t mp; } } } 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. i f( x. ar r [ x. j ] >x. ar r [ x. j +1] ) { proses untuk mencocokkan data 1 dengan data yang disebelahnya. 22. x. t mp = x. ar r [ x. j ] ; tempat untuk menampung array yang lama. 23. x. ar r [ x. j ] = x. ar r [ x. j +1] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 24. x. ar r [ x. j +1] =x. t mp; proses untuk menukar array baru dengan array lama. 25. cout <<"\ nSet el ah Pengur ut an\ n"; for( x. i =1; x. i <x. n; x. i ++) { cout <<"El emen ke " << x. i +1 <<"="<<x. ar r [ 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
/ * * Pr akt i kum6. 2. cpp * * Cr eat ed on: Apr 22, 2014 * Aut hor : STI KOM32 */
#include<i ost r eam> using namespace st d;
typedef int c;
int main( ) { c i , j , n; c t mp; c ar r [ 50] ;
cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>n; for( i =0; i <n; i ++) { cout <<"Masukkan dat a ke " << i +1 << "="; ci n>>ar r [ i ] ; } for( i =1; i <n; i ++) { for( j =0; j <n- 1; j ++) { if( ar r [ j ] >ar r [ j +1] ) { 23
t mp = ar r [ j ] ; ar r [ j ] =ar r [ j +1] ; ar r [ j +1] =t mp; } } } cout <<"\ nSet el ah pengur ut an dat a\ n"; for( i =0; i <n; i ++) { cout <<"\ nEl emen ke " << i +1 << ": " <<ar r [ 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 t mp; c ar r [ 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. i nt t mp; Tmp penampung elemen array 16. i nt ar r [ 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 ++) { i f( Ar r [ j ] > Ar r[ j +1] ) { t mp = ar r [ j ] ; ar r [ i ] = ar r [ j +1] ; ar r [ j +1] = t mp; } } } 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. i f( ar r [ j ] > ar r[ j +1] ) { proses untuk mencocokkan data 1 dengan data yang disebelahnya. 23. t mp = ar r [ j ] ; tempat untuk menampung array yang lama. 24. ar r [ j ] = ar r [ j +1] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 25. ar r [ j +1] = t mp; proses untuk menukar array baru dengan array lama. 26. cout <<"\ nSet el ah Pengur ut an\ n"; for( i =1; i <n; i ++) { cout <<"El emen ke " << i +1 <<"="<<ar r[ 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 / * * Pr akt i kum6. 2. cpp * * Cr eat ed on: Apr 28, 2014 * Aut hor : STI KOM32 */
#include<i ost r eam> using namespace st d;
typedef struct bi l angan { int i , j , n; int t mp; int ar r [ 50] ;
}; struct bi l angan x;
int main( ) { cout <<"I nput kan banyak dat a yang akan di ur ut kan : "; ci n>>x. n; for( x. i =0; x. i <x. n; x. i ++) { cout <<"Masukkan dat a ke " << x. i +1 << "="; ci n>>x. ar r [ 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. ar r [ x. j ] >x. ar r [ x. j +1] ) { x. t mp = x. ar r [ x. j ] ; x. ar r [ x. j ] =x. ar r [ x. j +1] ; x. ar r [ x. j +1] =x. t mp; } } } cout <<"\ nSet el ah pengur ut an dat a\ n"; for( x. i =0; x. i <x. n; x. i ++) { cout <<"\ nEl emen ke " << x. i +1 << ": " <<x. ar r [ 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 bi l angan { int i , j , n; int t mp; int ar r [ 50] ; }; struct bi l angan 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. i nt t mp; Tmp penampung elemen array 15. i nt ar r [ 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
i f( x. ar r [ x. j ] >x. ar r [ x. j +1] ) { x. t mp = x. ar r [ x. j ] ; x. ar r [ x. i ] = x. ar r [ x. j +1] ; x. ar r [ x. j +1] =x. t mp; } } } 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. i f( x. ar r [ x. j ] >x. ar r [ x. j +1] ) { proses untuk mencocokkan data 1 dengan data yang disebelahnya. 22. x. t mp = x. ar r [ x. j ] ; tempat untuk menampung array yang lama. 23. x. ar r [ x. j ] = x. ar r [ x. j +1] ; jika pernyataan benar maka proses ini akan dilakukan, yaitu mengganti array yang lama dengan array yang baru. 24. x. ar r [ x. j +1] =x. t mp; proses untuk menukar array baru dengan array lama. 25. cout <<"\ nSet el ah Pengur ut an\ n"; for( x. i =1; x. i <x. n; x. i ++) { cout <<"El emen ke " << x. i +1 <<"="<<x. ar r [ 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)).