Anda di halaman 1dari 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
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)).

Anda mungkin juga menyukai