Anda di halaman 1dari 15

LAPORAN PRAKTIKUM II

SORTING (PENGURUTAN)

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data


Dibimbing oleh Ibu Triyanna Widiyaningtyas

Oleh:
Nama : Musfiratus Solehah
Nim : 150533602144
S1 PTI OFF-C 2015

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
Februari 2016
SORTING (PENGURUTAN)
Tujuan :

1. Mampu menjelaskan mengenai algoritma Sorting.


2. Mampu membuat dan mendeklarasikan structural algoritma Sorting.
3. Mampu menerapkan dan mengimplementasikan algorita Sorting.

Latihan Praktikum I
Permasalahan : Berikan algoritma dan penjelasan dari syntax program!
Compiler : MinGW Developer Studio
Script program :
#include <iostream.h>
#include <iomanip.h>

using namespace std;


int main()
{
int NumList [10]={12,29,56,4,31,9,17,19,48,3};
int temp;
cout<<"DAta Angka Sebelum diurutkan :\n";
for (int d=0; d<10; d++)
{
cout<<setw(3)<<NumList[d];
}
cout<<"\n\n";
for (int a=0; a<10; a++)
for (int b=0; b<10; b++)
if (NumList [b]>= NumList [b+1])
{
temp = NumList [b];
NumList [b] = NumList [b+1];
NumList[b+1]=temp;
}
cout<<"Data setelah diurutkan :\n";
for (int c=0; c<10; c++)
cout<<setw(3)<<NumList[c]<<" ";
cout<<endl;
}
Output Program :
Algoritma :
1. Start.
2. Membaca fungsi-fungsi (numlist dan temp).
3. Membaca data yang belum diurutkan.
4. Memproses data menggunakan buble sort.
temp = NumList [b];
NumList [b] = NumList [b+1];
NumList[b+1]=temp;
5. Melakukan perulangan.
6. Tampilkan hasil.
7. Finish.
Penjelasan Program :
Program diatas dibuat untuk mengurutkan data yang sebelumnya belum urut menggunakan
buble sort dengan metode ascending. Awalnya program akan membaca fungsi yang
dideklarasikan di awal yaitu temp dan numlist, setelah itu program akan membaca data yang
akan diurutkan untuk mengurutkan data sampai urut semua. Dalam memproses data
menggunakan rumus temp = NumList [b]; NumList [b] = NumList [b+1];
NumList[b+1]=temp;. Kemudian dilakukan perulangan agar semua data dapat terurutkan,
apabila data telah urut semua maka program akan menampilkan data sebelum dan sesudah
diurutkan.

Latihan Praktikum II
Permasalahan : Berikan algoritma dan penjelasan dari syntax program!
Compiler : MinGW Developer Studio
Script program :
//selection sort
#include <iostream.h>
#include <iomanip.h>

using namespace std;


void SelectionSort (int Array [], const int Size)
{
int i,j,small,temp;
for (i=0; i<Size; i++)
{
small=i;
for (j=0; j<Size; j++)
{
if (Array [j] > Array [small])
{
small=j;
temp=Array[i];
Array[i]=Array[small];
Array[small]=temp;
}
}
}
}
int main()
{
int NumList [10]={12,29,56,4,31,9,17,19,48,3};
int temp;
cout<<"Data sebelum diurutkan :\n";
for(int d=0; d<10; d++)
{
cout<<setw(3)<<NumList[d];
}
cout<<"\n\n";
SelectionSort(NumList, 10);
cout<<"Data setelah diurutkan\n";
for (int a=0; a<10; a++)
cout<<setw(3)<<NumList[a]<<endl<<endl;
}
Output Program :

Algoritma :
1. Start.
2. Mendeklarasikan fungsi-fungsi.
3. Membaca/memanggil data yang akan diurutkan
4. Memproses data menggunakan insertion sort :
small=j;
temp=Array[i];
Array[i]=Array[small];
Array[small]=temp;
5. Melakukan perulangan.
6. Tampilkan hasil.
7. Finish.
Penjelasan Program :
Program tersebut dibuat untuk mengurutkan data menggunakan insertion sort dengan metode
ascending. Pada awalnya program akan membaca fungsi yang telah dideklarasikan, kemudian
memanggil data yang akan diurutkan, setelah mengetahui data-data yang akan diurutkan
maka dilakukan proses pengurutan menggunakan small=j; temp=Array[i];
Array[i]=Array[small]; Array[small]=temp;. Setelah itu melakukan perulangan agar data
yang belum urut tadi menjadi terurutkan semua setelah data selesai diurutkan maka program
akan menampilkan data yang belum diurutkan dan sudah diurutkan tersebut.

Latihan Praktikum III


Permasalahan : Berikan algoritma dan penjelasan dari syntax program!
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
//shell sorting
#include<iostream.h>
using namespace std;

int main()
{
int array[5];
int length=5;
int i,j,d;
int tmp,flag;
for(i=0; i<length; i++)
{
cout<<"enter a number :";
cin>>array[i];
}
d=length;
//flag=1;
flag=1;
while (flag || (d>1))
{
flag=0;
d=(d+1)/2;
for (i=0; i<(length-d); i++)
{
if (array[i+d]>array[i])
{
tmp=array[i+d];
array[i+d]=array[i];
array[i]=tmp;
flag=1;
}
}
}
for (i=0; i<5; i++)
{
cout<<array[i]<<endl;
}
Output Program :

Algoritma :
1. Start.
2. Membaca fungsi-fungsi.
3. Memasukkan data yang ingin diurutkan.
4. Membaca percabangan, flag digunakan untuk menandai.
5. Memproses data menggunakan :
tmp=array[i+d];
array[i+d]=array[i];
array[i]=tmp;
flag=1;
6. Membaca perulangan.
7. Tampilkan hasil.
8. Finish.
Penjelasan Program :
Pada program diatas dibuat untu mengurutkan data menggunakan shell sort dengan metode
descending. Pada awalnya user diminta untuk menginputkan data-data yang belum urut,
kemudian program akan menandai atau melakukan percabangan untuk memproses data
tersebut. Setelah itu program akan memproses data menggunakan tmp=array[i+d];
array[i+d]=array[i]; array[i]=tmp; flag=1;, program akan melakukan perulangan agar semua
data tersebut urut. Lalu ketika semua data telah terurut maka program akan menampilkan
hasil.
Latihan Praktikum IV
Permasalahan : Berikan algoritma dan penjelasan dari syntax program!
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
//quick sorting
#include <iostream>
#include <iomanip>
using namespace std;

void quickSort (int[], int);


void q_sort (int[], int, int);
int main()
{
int NumList[10]={12,29,56,4,31,17,19,48,3};
int temp;
cout<<"Data sebelum diurutkan:\n";
for (int d=0; d<10; d++)
{
cout<<setw(3)<<NumList[d];
}
cout<<"\n\n";
quickSort (NumList,10);
cout<<"Data setelah diurutkan:\n";
for (int iii=0; iii<10; iii++)
cout<<setw(3)<<NumList[iii]<<endl<<endl;
}
void quickSort (int numbers[], int array_size)
{
q_sort (numbers,0,array_size-1);
}
void q_sort (int numbers[], int left, int right)
{
int pivot, l_hold, r_hold;
l_hold=left;
r_hold=right;
pivot=numbers[left];
while (left<right)
{
while ((numbers[right]>=pivot)&&(left<right))
right--;
if (left!=right)
{
numbers[left]=numbers[right];
left++;
}
while ((numbers[left]<=pivot)&&(left<right))
left++;
if (left!=right)
{
numbers[right]=numbers[left];
right--;
}
}
numbers[left]=pivot;
pivot=left;
left=l_hold;
right=r_hold;
if(left<pivot)
q_sort(numbers, left, pivot-1);
if(right>pivot)
q_sort(numbers, pivot+1,right);
}
Output Program :

Algoritma :
1. Start.
2. Membaca fungsi-fungsi.
3. Membaca data yang akan diurutkan.
4. Membaca perulangan.
5. Pemanggilan fungsi quicksort.
6. Memproses data dengan fungsi quicksort.
7. Menampilkan data.
8. Finish.
Penjelasan Program :
Program diatas dibuat untuk mengurutkan data menggunakan quick sort dengan metode
ascending. Pada awalnya program akan membaca fungsi-fungsi yang telah dideklarasikan,
kemudian membaca data yang akan diurutkan. Setelah itu dilakukan perulangan pada proses
pengurutan data agar semua data terurut. Sebelum memproses data program akan terlebih
dahulu memanggil fungsi quicksort. Pada program pengurutan quicksort array dibagi menjadi
dua bagian (pemartisian) dengan semua elemen bagian kiri selalu lebih kecil atau sama
dengan daripada nilai elemen pivot dan nilai semua elemen bagian kanan selelu lebih besar
daripada pivot.

Latihan Praktikum V
Permasalahan : Berikan algoritma dan penjelasan dari syntax program!
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
//radix sorting
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;

void radix (int byte, long N, long *source, long *dest)


{
long count [256];
long index [256];
int i;
memset (cout, 0, sizeof(count));
for (i=0; i<N; i++)count[((source[i])>>(byte*8))&0xff]++;
index[0]=0;
for (i=1; i<256; i++) index[i]=index[i-1]+count[i-1];
for (i=0; i<N; i++) dest[index[(source[i]>>(byte*8))&0xff]++]=source[i];
}
void radixsort (long *source, long *temp, long N)
{
radix (0,N,source,temp);
radix (1,N,temp,source);
radix (2,N,source,temp);
radix (3,N,temp,source);
}
void make_random (long *data, long N)
{
for (int i=0; i<N; i++) data[i]=rand() | (rand()<<16);
}
long data[100];
long temp[100];
int main(void)
{
make_random (data,100);
radixsort (data, temp, 100);
for (int i=0; i<100; i++)cout<<data[i]<<"\n";
}
Output Program :

Algoritma :
1. Start.
2. Membaca fungsi radix.
3. Melakukan perulangan.
4. Mambaca fungsi-fungsi.
5. Pemanggilan fungsi make_random, radixsort.
6. Melakukan perulangan.
7. Tampilkan hasil.
8. Finish.
Penjelasan Program :
Progam diatas dibuat menggunakan radix sort yang digunakan untuk mencari letak alamat
data berdasarkan nilai radixnya.
Tugas Rumah I
Permasalah : Buatlah sebuah program untuk mengurutkan sepasang data
yang dimasukkan berdasarkan abjad/huruf!!
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Tampilan yang dingginkan :

Script program :
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;

main()
{
int angka[20],a,b,c;
char huruf[20],kedua[20][20],pilihan;
cout<<" \n";

cout<<">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n";
cout<<" \n";
cout<<" SORTING \n";
cout<<" \n";

cout<<"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n";
cout<<" \n";
cout<<" Masukan jumlah maksimal: ";cin>>a;
cout<<" \n";
for(b=0;b<a;b++)
{
cout<<" Masukan huruf ke "<<b+1<<" : ";cin>>huruf[b];
cout<<" Masukan angka ke "<<b+1<<" : ";cin>>angka[b];
cout<<"\n";
}
system("cls");
cout<<"\ntampilkan sebelum sorting: \n";
for(b=0;b<a;b++)
{
cout<<huruf[b]<<" ";
}
cout<<"\n";
for(b=0;b<a;b++)
{
cout<<angka[b]<<" ";
}
for(b=0;b<a-1;b++)
{
for(c=0;c<a-1-b;c++)
{
if(huruf[c]>huruf[c+1])
{
int tmp,tmp1;
tmp=huruf[c];
tmp1=angka[c];
huruf[c]=huruf[c+1];
huruf[c+1]=tmp;
angka[c]=angka[c+1];
angka[c+1]=tmp1;
}
}
}

cout<<"\n";
cout<<"\n\nsetelah di sorting berdasarkan huruf\n";
cout<<"\n";
for(b=0;b<a;b++)
{
cout<<huruf[b]<<" ";
}
cout<<"\n";
for(b=0;b<a;b++)
{
cout<<angka[b]<<" ";
}
Output Program :
Algoritma :
1. Start.
2. Membaca fungsi-fungsi (interger dan char).
3. Memasukkan nilai maksimum.
4. Membaca perulangan.
5. Memasukkan huruf dan akan yang ingin diurutkan sebanyak nilai maksimum.
6. Membaca
7. Melakukan proses pengurutan :
tmp=huruf[c];
tmp1=angka[c];
huruf[c]=huruf[c+1];
huruf[c+1]=tmp;
angka[c]=angka[c+1];
angka[c+1]=tmp1;
8. Tampilkan hasil.
9. Finish.
Penjelasan Program :
Program diatas dibuat untuk mengurutkan data dengan syarat bahwa data yang diurutkan
sesuai dengan urutan huruf yang dimasukkan. Setelah program membaca deklarasi fungsi
maka user diminta untuk menginputkan nilai maksimum atau jumlah banyak data yang akan
diurutkan, setelah itu user diminta untuk memasukkan huruf dan angka yang akan diurutkan
tentunya disesuaikan pada inputan yang diinginkan pada soal. Setelah semua data selesai
diinputkan program akan memproses data tersebut agar urut menggunakan sorting.
Kemudian program akan melakukan perulangan hingga data yang diinputkan tersebut urut,
lalu ketika data yang diinputkan telah urut berdasarkan urutan huruf maka program akan
berhenti dan program akan menampilkan hasilnya.

KESIMPULAN
1. Pengurutan data dilakukan secara ascending (urut naik) & descending (urut turun).
2. Sorting adalah pengurutan data yang sebelumnya disusun secara acak sehingga
tersusun secara teratur menurut aturan tertentu.
3. Soting terdiri dari beberapa jenis yaitu : buble sort, exchange sort, selection sort,
insert sort, quicksort.
4. Buble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan
elemen berikutnya.
5. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam
suatu array, dan melakukan pertukaran elemen jika diperlukan.
6. Selection sort merupakan kombinasi antara sorting dan searching, pada setiap proses
akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau
terbesar akan ditukarkan ke posisi yang tepat di dalam array.
7. Insert sort, pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika
ditemuan data yang lebih kecil, maka akan ditempatkan (di-insert) diposisi yang
seharusnya.

DAFTAR RUJUKAN

1. Tim Asisten Dosen. 2016. Modul 1 array, pointer, dan struct. Algoritma dan struktur
komputer. Malang: Universitas Negeri Malang.
2. Tim Asisten Dosen. 2016. Modul 2 sorting. Algoritma dan struktur komputer. Malang:
Universitas Negeri Malang.

Anda mungkin juga menyukai