PERTEMUAN 18
PENGERTIAN SORTING
Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending), yaitu urutan objek yang disusun mulai dari Nilai terkecil hingga terbesar atau menurun (descending), yaitu urutan objek yang disusun mulai dari Nilai terbesar hingga terkecil. Jika N buah objek atau data disimpan di dalam array Nilai, maka pengurutan menaik berarti menyusun elemen array sedemikian sehingga:
NILAI[0] ≤ NILAI[1] ≤ NILAI[2] ≤ … ≤ NILAI[N-1]
Sedangkan pengurutan menurun berarti menyusun elemen array sedemikian sehingga:
NILAI[0] ≥ NILAI[1] ≥ … ≥ NILAI[N-1]
Data yang diurut dapat berupa data bertipe data dasar atau tipe data bentukan. Jika data bertipe bentukan (structure), maka harus disebutkan berdasarkan field apa data tersebut akan diurutkan.
Sama halnya dengan pencarian, pengurutan juga dibedakan menjadi dua kelompok, yaitu:
- Pengurutan Internal, yaitu pengurutan terhadap sekumpulan data yang disimpan di dalam memori komputere. Umumnya struktur internal yang dipakai untuk pengurutan ini adalah array, sehingga pengurutan internal disebut dengan pengurutan array.
- Pengurutan Eksternal, yaitu pengurutan data yang disimpan di dalam memori sekunder. Biasanya data dengan berjumlah besar sehingga tidak mampu dimuat semuanya dalam memori komputer. Struktur eksternal yang dipakai adalah arsip (file), maka pengurutan ini juga sering disebut dengan pengurutan arsip.
Karena pengaksesan memori utama lebih cepat dari pada pengaksesan memori sekunder, maka pengurutan internal lebih cepat dibanding dengan pengurutan eksternal.
Contoh soal :
Buat program animasi Sorting dengan menu seperti gambar dibawah ini Ket :
INSERT DATA : menambah data pada array
INSERTION SORT : Sorting data menggunakan algoritma Insertion
SELECTION SORT : Sorting data menggunakan algoritma Selection
BUBBLE SORT : Sorting data menggunakan algoritma Bubble Sort
EXIT : Keluar/selesai
Tampilan menu :
SORTING DATA ARRAY
==========================
1. INSERT DATA ARRAY
2. INSERTION SORT
3. SELECTION SORT
4. BUBBLE SORT
5. EXIT
Pilihan (1 – 5) :
-----------------------------------------------------------------------------------------------------------------------------
#include<time.h>
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;
int main() {
int pil;
cout << (" ======================================\n");
cout << (" = Fikriansyah | 191011400352 =\n");
cout << (" = STRUKTUR DATA PERTEMUAN 18 =\n");
cout << (" = SORTING =\n");
cout << (" ======================================\n");
cout << " 1. Insert Data Array" <<endl;
cout << " 2. Bubble Sort" <<endl;
cout << " 3. Insertion Sort" <<endl;
cout << " 4. Selection Sort" <<endl<<endl;
cout << " ======================================"<<endl<<endl;
cout << " Masukan pilihan anda = "; cin >> pil;
switch(pil) {
case 1:
int a, b, c, d, e, f;
system("cls");
cout << " Insert Data Array "<<endl;
cout << " ======================================"<<endl;
cout << " Data Ke - 1 : ";cin>>a;
cout << " Data Ke - 2 : ";cin>>b;
cout << " Data Ke - 3 : ";cin>>c;
cout << " Data Ke - 4 : ";cin>>d;
cout << " Data Ke - 5 : ";cin>>e;
cout << " Data Ke - 6 : ";cin>>f;
cout << " ======================================"<<endl;
cout <<" \n"<<" "<<a<<", "<<b<<", "<<c<<", "<<d<<", "<<e<<", "<<f<<endl;
break ;
case 2:
cout << endl;
cout << " Bubble sort"<<endl;
cout << " ======================================"<<endl;
int t1,t2;
int hold;
int array[6];
cout<<" Masukan Data :"<<endl;
for(int i=0; i<5; i++) {
cout << " Data Ke - " <<i+1 <<" : ";cin>>array[i];
}
cout<<endl;
t1=GetTickCount();
cout<<" Sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<array[j];
cout<<" ";
}
cout <<endl<< " Urutan program"<<endl;
for(int i=0; i<4; i++) {
for(int j=0; j<4; j++) {
if(array[j]<array[j+1]) {
hold=array[j];
array[j]=array[j+1];
array[j+1]=hold;
for(int i=0; i<5; i++) {
cout<<" "<<array[i]<<" ";
}
cout<<endl;
}
}
}
cout<<endl;
cout<<" Setelah di sortir = ";
for(int i=0; i<5; i++) {
cout<<array[i]<<" ";
}
break;
case 3:
cout << " Insertion sort";
cout <<" ======================================"<<endl;
int t3,t4;
int Key;
int array1[6];
cout<<"Masukan Data : "<<endl;
for(int i=0; i<5; i++) {
cout << " Data Ke - " <<i+1 <<" = ";cin>>array1[i];
}
cout<<endl;
t3=GetTickCount();
cout<<" Data sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<array1[j]<<" ";
}
cout<<endl;
cout<< " Data proses "<<endl;
for(int j=1 ; j < 5 ; j++) {
Key = array1[j];
int i = j-1;
while(i >= 0 && array1[i] < Key) {
array1[i + 1] = array1[i];
i = i - 1;
}
array1[i + 1] = Key;
for(int l=0; l<5; l++) {
cout<<array1[l]<<" ";
}
cout<<endl;
}
cout<<" Data setelah disortir = "<<endl;
for(int i=0; i<5; i++) {
cout<<array1[i]<<" ";
}
break;
case 4:
cout << " Selection sort";
cout <<" ======================================"<<endl;
int t5,t6;
int arr[6];
int mini,temp;
cout<<"Masukan Data ="<<endl;
for(int i=0; i<5; i++) {
cout << " Data Ke - " <<i+1 <<" = ";cin>>arr[i];
}
t5=GetTickCount();
cout<<endl;
cout<<" Data sebelum di sortir = ";
for(int j=0; j<5; j++) {
cout<<arr[j]<<" ";
}
for(int r1=0;r1<4;r1++) {
mini=r1;
for(int r2=r1+1; r2<5; r2++)
if(arr[r2]>arr[mini])
mini=r2;
if(mini !=r1) {
temp=arr[r1];
arr[r1]=arr[mini];
arr[mini]=temp;
}
}
cout<<endl;
cout<<endl;
cout<<" Setelah di sortir = ";
for(int q=0; q<5; q++) {
cout<<arr[q]<< " " ;
}
break;
default:
cout << " Pilihan tidak ada"<<endl;
break;
}
getch();
}
HASIL :
Komentar
Posting Komentar