LAPORAN MODUL 2
SORTING (PENGURUTAN)
Untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data
Yang Dibimbing oleh Ibu Triyanna
Disusun Oleh :
Septian Adi Pratama
150533604474
S1 PTI OFF D 2015
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA
FEBRUARI 2016
SORTING (PENGURUTAN)
Tujuan
Mampu menjelaskan mengenai algoritma sorting
Mampu membuat dan mendeklarasikan struktural algoritma Sorting
Mampu menerapkan dan mengimplementasikan algoritma Sorting
Dasar Teori
Dalam arti bahasa sorting adalah penyortiran atau memilih-milih. Pada struktur data Sorting adalah sebuah metode untuk pengurutan data, misalnya dari data yang terbesar ke data yang terkecil dan sebaliknya. Dengan cara program yang dibuat harus dapat membandingkan antar data yang di inputkan.
Artinya jika ada deretan data, maka data yang pertama akan membandingkan dengan data yang kedua. Jika data yang pertama lebih besar dari pada data yang kedua maka data yang pertama akan bertukar posisi dengan data yang kedua, begitu seterusnya sampai benar-benar data terurut dari yang terbesar hingga yang terkecil.
Pengurutan data dalam struktur data sangat penting terutama untuk data yang bertipe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun). Pengurutan (Sorting) adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak 3, 9, 6, 21, 10, 1, 13
Ascending 1, 3, 6, 9, 10, 13, 21
Descending 21, 13, 10, 9, 6, 3 , 1
Deklarasi Array Sorting
Mendeklarasikan array secara global:
int data[100];
int n; //untuk jumlah data
Fungsi Tukar 2 Buah Data:
void tukar (int a, int b) {
int tmp;
tmp = data [a] ;
data [a] = data [b] ;
data [b] = tmp ;
Macam-macam metode sorting yaitu :
Bubble Sort
Merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar.
Kelebihan Bubble Sort :
Metode Buble Sort merupakan metode yang paling simpel
Metode Buble Sort mudah dipahami algoritmanya
Kelemahan Bubble Sort :
Meskipun simpel metode Bubble sort merupakan metode pengurutanyang paling tidak efisien. Kelemahan buble sort adalah pada saat mengurutkan data yang sangat besar akan mengalami kelambatan luar biasa, atau dengan kata lain kinerja memburuk cukup signifikan ketika data yang diolah jika data cukup banyak. Kelemahan lain adalah jumlah pengulangan akan tetap sama jumlahnya walaupun data sesungguhnya sudah cukup terurut. Hal ini disebabkan setiap data dibandingkan dengan setiap data yang lain untuk menentukan posisinya.
Algoritma Bubble Sort :
Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).
Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
Implementasi Bubble Sort dalam bahasa C++
Exchange Sort
Melakukan pembandingan antara data, dan melakukan pertukaran apabila urutan yang didapat belum sesuai. Bisa dikatakan Bubble sort sama dengan Exchange Sort karena kedua metode ini melakukan pertukaran berulang-ulang terhadap elemen data yang belum diurutkan.
Perbedaan :
Exchange Sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).
Sedangkan Bubble Sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen tersebut itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.
Selection Sort
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus dari pada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut :
Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
Menukarkan nilai ini dengan elemen pertama list
Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.
Implementasi Selection Sort dalam bahasa C++
#include
#include
#include
#include
#ifdef __cplusplus__
#include
#else
#include
#endif
using namespace std;
int main()
{
int x[5];
int i;
int temp;
int minindex;
int j;
if (system("CLS")) system("clear");
cout << " >> Program Selection Sort << \n" << endl;
cout << "masukkan nilai x :\n";
for (i = 0; i<5; i++)
{
cout << "x[" << i << "] = "; cin >> x[i];
}
cout << "\n Data sebelum di sort :";
for (i = 0; i<5; i++)
{
cout << setw(4) << x[i];
}
for (i = 0; i<5 - 1; i++) //perulangan iterasi
{
minindex = i;
for (j = i + 1; j<5; j++) //perulangan membandingkan data
{
if (x[minindex]>x[j])
{
minindex = j;
}
}
temp = x[i];
x[i] = x[minindex];
x[minindex] = temp;
}
cout << "\n Data setelah di sort :";
for (i = 0; i<5; i++)
{
cout << setw(4) << x[i];
}
getchar();
cout << endl;
system("pause");
}
Heap Sort
Heapsort merupakan salah satu bentuk dari selection sort yang memiliki kompleksitas algorima O(n log(n)) yang menggunakan struktur data heap. Algoritma ini bekerja dengan menentukan elemen terbesar (atau terkecil) dari sebuah daftar elemen, dan diletakkan pada akhir (atau awal) dari daftar tersebut. Heap sort menyelesaikan sebuah pengurutan menggunakan struktur data yang disebut heap. Heap merupakan sebuah pohon biner hampir lengkap dimana isi dari simpul ayah selalu lebih besar dari isi simpul anak-anaknya sehingga simpul akar selalu merupakan elemen terbesar.
Algoritma :
Buat suatu heap.
Ambil isi dari root masukkan kedalam sebuah array.
Hapus element root dengan mempertahankan properti heap.
Ulangi sampai tree menjadi kosong
Implementasi Heap Sort dalam bahasa C++
Insertion Sort
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang ada. Ide algoritma dari metode insertion sort ini dapat dianalogikan sama seperti mengurutkan kartu, dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut. Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.
Penganalogian Insertion Sort dengan pengurutan kartu :
Berikut menjelaskan bagaimana algoritma Insertion Sort bekerja dalam pengurutan kartu, Anggaplah kita ingi mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
Dimulai dengan posisi tangan kosong, dan semua kartu berada diatas meja. dan anggaplah kita akan menyusun kartu ke tangan kiri kita.
Mengamil kartu pertama dari meja dan meletakannya ke tangan kiri.
Mengambil kartu kedua dan membandingkannya dengan kartu yang sudah ada di tangan kiri.
Jika kartu yang diambil dari meja memenuhi syarat perbandingan, maka kartu tersebut akan diletakan didepan kartu yang dibandingkan, serta kartu yang lain yang telah dibandingkan akan bergeser mundur (ke belakang).
Implementasi Insertion Sort dalam bahasa C++
#include
#include
using namespace std;
int main()
{
int i, j, n, data[10], simpan, min, posisi;
cout << "Masukkan banyak data = "; cin >> n;
for (i = 1; i <= n; i++)
{
cout << "Data ke - " << i << " = "; cin >> data[i];
}
for (i = 1; i
{
for (j = i + 1; j <= n; j++)
{
if (data[i]>data[j])
{
simpan = data[i];
data[i] = data[j];
data[j] = simpan;
}
}
}
cout << "Hasil sorting adalah = ";
for (i = 1; i <= n; i++)
cout << data[i] << " ";
getchar();
system("pause");
}
Tree Sort
Tree sort adalah metode sorting dengan cara membangun pohon biner dengan menampilkan 3 hasik output:
Pre Order, In Order, Post Order.
Perhatikan gambar di bawah ini.
Ketentuan dari gambar diatas adalah :
Menjadi akar ,
Menjadi subtree kiri,
Menjadi subtree kanan,
Menjadi daun dari subtree kiri ,
Menjadi daun dari subtree kanan.
Implementasi Tree Sort dalam bahasa C++
#include
using namespace std;
struct tree{
int info;
tree *Left, *Right;
};
tree *root;
class TreeSort{
public:
int no_of_elements;
int elements[10];
public:
void getarray();
void sortit();
void insert1(int);
tree *insert2(tree *, tree *);
void display(tree *);
};
void TreeSort::getarray(){
cout<<"How many elements? ";
cin>>no_of_elements;
cout<<"Insert array of element to sort: ";
for(int i=0;i
cin>>elements[i];
}
}
void TreeSort::sortit(){
for(int i = 0; i < no_of_elements; i++){
insert1(elements[i]);
}
}
tree* TreeSort::insert2(tree *temp,tree *newnode){
if(temp==NULL){
temp=newnode;
}
else if(temp->info < newnode->info){
insert2(temp->Right,newnode);
if(temp->Right==NULL)
temp->Right=newnode;
}
else{
insert2(temp->Left,newnode);
if(temp->Left==NULL)
temp->Left=newnode;
}
return temp;
}
void TreeSort::insert1(int n){
tree *temp=root,*newnode;
newnode=new tree;
newnode->Left=NULL;
newnode->Right=NULL;
newnode->info=n;
root=insert2(temp,newnode);
}
/* Inorder traversal */
void TreeSort::display(tree *t = root){
if(root==NULL){
cout<<"Nothing to display";
}else
if(t!=NULL){
display(t->Left);
cout<info<<" ";
display(t->Right);
}
}
int main(){
TreeSort TS;
TS.getarray();
TS.sortit();
TS.display();
return 0;
}
Quick Sort
Algoritma sortir yang efisien yang ditulis oleh C.A.R. Hoare pada 1962. Dasar strateginya adalah "memecah dan menguasai". Quicksort dimulai dengan menscan daftar yang disortir untuk nilai median. Nilai ini, yang disebut tumpuan (pivot), kemudian dipindahkan ke satu sisi pada daftar dan butir-butir yang nilainya lebih besar dari tumpuan di pindahkan ke sisi lain.
Algoritma ini mengambil salah satu elemen secara acak (biasanya dari tengah) yang disebut dengan pivot lalu menyimpan semua elemen yang lebih kecil di sebelah kiri pivot dan semua elemen yang lebih besar di sebelah kanan pivot. Hal ini dilakukan secara rekursif terhadap elemen di sebelah kiri dan kanannya sampai semua elemen sudah terurut.
Ide dari algoritma ini adalah sebagai berikut:
Pilih satu elemen secara acak sebagai pivot
Pindahka semua elemen yang lebih kecil ke sebelah kiri pivot dan semua elemen yang lebih besar ke sebelah kanan pivot. Elemen yang nilainya sama bisa disimpan di salah satunya.
Lakukan sort secara rekursif terhadap sub-array sebelah kiri dan kanan pivot
Implementasi Quick Sort dalam bahasa C++
Merge Sort
Merge sort merupakan algoritma pengurutan dalam ilmu komputer yang dirancang untuk memenuhi kebutuhan pengurutan atas suatu rangkaian data yang tidak memungkinkan untuk ditampung dalam memori komputer karena jumlahnya yang terlalu besar. Algoritma ini ditemukan oleh John von Neumann pada tahun 1945.
Algoritma dirumuskan dalam 3 langkah berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.
Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan
Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.
Implementasi Merge Sort dalam bahasa C++
Shell Sort
Merupakan algoritma yang stau jenis dengan insertion sort, metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan.
Implementasi Shell Sort dalam bahasa C++
Latihan Praktikum
Percobaan 1
Algoritma dan Struktur Data
Nama Program : Bubble Sorting
Syntax :
/* bubble sorting */
#include
#include
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<
}
cout<<"\n\n";
for(int a=0; a<9; a++)
for(int b=0; b<9; 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<
cout<
}
Tampilan Output :
Algoritma :
Mulai
Membaca file header
Membaca fungsi utama
Membaca fungsi numlist [10]
Membaca fungsi temp
Cetak hasil
Tampilan data sebelum diurutkan
Membaca fungsi perulangan
Membaca fungsi metode bubble sort
temp=NumList[b];
NumList[b]=NumList[b+1];
NumList[b+1]=temp;
Cetak hasil
Tampilan data setelah diurutkan
Membaca fungsi perulangan
Cetak hasil
Selesai
Penjelasan Program :
Program diatas mengurutkan data yang sudah ada dengan menggunakan bubble sort. Sistematika bubble sort yaitu membandingkan dua elemen berdekatan yang dilakukan dari belakang, tergantung perintahnya. yang diminta asscending atau desscending. maka membandingkan mana angka yang lebih kecil atau lebih besar sesusai urutan tata letaknya. jika lebih besar atau lebih kecil (tata urutannya salah) maka lakukan pertukaran. jika tidak lanjutkan ke proses lainnya sampai urutannya benar.
Percobaan 2
Algoritma dan Struktur Data
Nama Program : Selection Sorting
Syntax :
/* Selection Sorting */
#include
#include
using namespace std;
void SelectionSort (int array[], const int size)
{
int i,j,small,temp;
for (i=0;i
{
small=i;
for(j=0;j
{
if (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<
}
cout<<"\n\n";
SelectionSort (NumList,10);
cout<<"Data Setelah Diurutkan : \n";
for (int a=0; a<10; a++)
cout<
}
Tampilan Output :
Algoritma :
Mulai
Membaca file header
Membaca fungsi int, small, temp
Membaca perulangan beserta fungsi small dan temp
Membaca fungsi utama, fungsi numlist dan temp
Membaca perulangan
Cetak hasil
Tampilan data sebelum diurutkan
Membaca fungsi metode selection sorting
Membaca perulangan
Cetak hasil
Tampilan data setelah diurutkan
Selesai
Penjelasan Program :
Program diatas mengurutkan data menggunakan metode selection sort untuk mengurutkan beberapa bilangan. Sistematika pengurutan dengan metode selection sort adalah menemukan nilai paling minimum/maksimum sesuai dengan perintah apakah assceding atau desscending. kemudia tukar nilai dengan nilai pada posisi pertama pada bagian struktur data yang belum diurutkan. kemudian lakukan terus penukaran nilai sampai semua struktur data tidak ada yang tidak di seleksi. Algoritma program diatas adalah menggunakan pembanding dan posisi. Angka tersebut di urutkan kemudian di posisikan barulah dilakukan pertukaran bilangan apabila memenuhi syarat.
Percobaan 3
Algoritma dan Struktur Data
Nama Program : Shell Sorting
Syntax :
/* Shell Sorting */
#include
using namespace std;
int main()
{
int array[5]; //An array of integer
int length=5; //Length of the array
int i,j,d;
int tmp,flag;
//some input
for(i=0;i
{
cout<<"Enter a number : ";
cin>>array[i];
}
//Algorithm
d=length;
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<
}
}
Tampilan Output :
Algoritma :
Mulai
Membaca file header
Membaca fungsi main
Membaca fungsi array yang didalamnya terdapat fungsi length
Membaca perulangan
Membaca percabangan
Membaca fungsi temp
Membaca perulangan
Pemanggilan array[i]
Cetak hasil
Selesai
Penjelasan Program :
Program diatas mengurutkan data menggunakan metode sheel Sort, Sistematika Sheel Sort membandingkan elemen pertama dengan elemen lain yang berada dalam jarak yang sama namun yang lingkupnya paling jauh, begitu seterusnya sampai membandingkan elemen pada jarak yang berdekatan satu sama lain.
Percobaan 4
Algoritma dan Struktur Data
Nama Program : Quick Sorting
Syntax :
/* Quick Sorting */
#include
#include
using namespace std;
void quickSort (int[],int);
void q_sort (int[],int,int);
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<
}
cout<<"\n\n";
quickSort (NumList,10);
cout<<"Data Setelah Diurutkan: \n";
for (int iii=0; iii<10; iii++)
cout<
}
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
{
while((numbers[right]>=pivot) && (left
right--;
if(left!=right)
{
numbers[left]=numbers[right];
left++;
}
while ((numbers[left]<=pivot) && (left
left++;
if (left != right)
{
numbers[right]=numbers[left];
right--;
}
}
numbers[left]=pivot;
pivot=left;
left=l_hold;
right=r_hold;
if (left
q_sort(numbers,left,pivot-1);
if (right>pivot)
q_sort(numbers, pivot+1, right);
}
Tampilan Output :
Algoritma :
Mulai
Membaca file header.
Membaca fungsi metode quick sort.
Membaca fungsi numlist [10], temp.
Membaca perulangan.
Pemanggilan fungsi quicksort.
Cetak hasil.
Tampilan data sebelum diurutkan.
Membaca fungsi Quicksort (numlist,10).
Cetak hasil.
Tampilan data setelah diurutkan.
Selesai
Penjelasan Program :
Program diatas menggunakan metode Quick Sort. Sistematika Quick Sort adalah jika struktur data terdiri dari 1/0 maka kembalikan struktur data apa adanya, jangan diubah. kemudian ambil sebuah elemen yang akan digunakan sebagai pivot biasanya elemen paling kiri. bagi struktur data menjad 2 bagian, satu dengan elemen yang lebih besar dari pada pivot, dan lainnya dengan elemen yang lebih kecil dengan pivot. ulangi terus secara rekursif terhadap kedua struktur tersebut.
Percobaan 5
Algoritma dan Struktur Data
Nama Program : Radix Sorting
Syntax :
/*Radix Sorting*/
#include
#include
#include
using namespace std;
void radix (int byte, long N, long *source, long *dest)
{
long count[256];
long index[256];
memset(count, 0, sizeof (count));
for (int i=0; i>(byte*8))&0xff]++;
index[0]=0;
for(int i=1;i<256; i++)index[i]=index[i-1]+count[i-1];
for(int i=0; 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
}
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<
}
Tampilan Output :
Algoritma :
Mulai
Membaca file header.
Membaca fungsi utama radix
Membaca rumus radix menggunakan memset
Membaca perulangan
Membaca fungsi radixsort
Membaca fungsi make_random
Membaca fungsi utama
Pemanggilan fungsi make_random,radixsort
Membaca perulangan
Cetak hasil
Selesai
Penjelasan Program :
Program tersebut meggunakan metode Radix Sort. Sistematikanya Radix Sort adalah mengkategorikan data-data menjadi sub kumpulan data sesuai dengan nilai radix-nya, mengkonkatenasinya, kemudian mengkategorikannya kembali berdasar nilai radix lainnya.
Tugas Rumah
Tugas Rumah
Algoritma dan Struktur Data
Nama Program : Mengurutkan sepasang data berdasarkan abjad/huruf
Syntax :
#include
#include
#include
using namespace std;
int main()
{
int angka[20],a,b,c;
char huruf[20];
cout<<"=================================\n";
cout<<" SORTING PASANGAN HURUF & ANGKA \n";
cout<<"=================================\n\n";
cout<<" Masukan Jumlah Maksimal: ";cin>>a;
for(b=0;b
{
cout<<"\n Masukan huruf ke "<>huruf[b];
cout<<" Masukan angka ke "<>angka[b];
}
cout<<"\n=======================================\n";
cout<<"\nTampilkan Sebelum Sorting: \n";
for(b=0;b
{
cout<
}
cout<<"\n";
for(b=0;b
{
cout<
}
for(b=0;b
for(c=0;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\nSetelah Di Sorting Berdasarkan Huruf :\n";
cout<<"\n";
for(b=0;b
cout<
}
cout<<"\n";
for(b=0;b
cout<
}
}
Tampilan Output :
Algoritma :
Mulai
Deklarasi header program
Masukkan input data
Masukkan kombinasi huruf dan angka
Menampilkan urutan sebelum di sorting
Melakukan proses sorting
Menampilkan urutan setelah di sorting
Selesai
Penjelasan Program :
Program di atas menggunakan perulangan for untuk proses sorting dan proses hasil sorting. Menggunakan fungsi tmp, tmp1 yang fungsinya untuk penyimpanan data bahkan hasil sorting.
KESIMPULAN
Algoritma pengurutan adalah algoritma yang meletakkan elemen-elemen suatu kumpulan data dalam urutan tertentu. Atau proses pengurutan data yg sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.
Ada 2 jenis sorting : Ascending (naik) & Descending (turun)
Exchange Sort melakukan pembandingan antar data, dan melakukan pertukaran apabila urutan yang didapat belum sesuai.
Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan / memasukan setiap elemen kedalam posisinya / tempatnya yg benar.
Quick sort banyak digunakan utk proses sorting,karena:
merupakan proses sorting yang umum digunakan.
mudah untuk diimplementasikan.
Prosesnya sangat cepat.
Untuk pemrograman konvensional maka pemeriksaan-pemeriksaan pasangan tersebut harus dilakukan satu demi satu, misalnya oleh bubble-sort dilakukan dari kanan ke kiri serta di dalam sejumlah iterasi.
Selection Sort , mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan.
Terdapat berbagai macam jenis sorting diantaranya : Bubble sort, Exchange Sort, Selection Sort, Heap Sort, Insertion Sort, Tree Sort, Quick Sort, Merge Sort, Shell Short, dll
Setiap jenis sorting memiliki kelebuhan dan kekurangan masing-masing
DAFTAR RUJUKAN
Tim Asisten Dosen. 2016. Modul 2 Sorting (Pengurutan). Malang: Unversitas Negeri Malang.
Suprapto. 2008. Bahasa Pemrograman Untuk SMK. Jakarta: Penerbit Departemen Pendidikan Nasional
Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.
https://lunarphue.wordpress.com/asd/macam-macam-sorting/ (diakses pada 01 Maret 2016)
http://sugengsiiswanto.blogspot.co.id/2013/12/jenis-metode-sorting-serta.html (diakses pada 01 Maret 2016)