Anda di halaman 1dari 39

BAB III

METODE SORTING DAN SEARCHING

3.1 Tujuan
1. Mengerti dan Memahami Metode Pencarian Data.
2. Dapat menggunakan Metode Pencarian Data dalam Program.
3. Memahami penggunaan metode Sorting.

3.2 Dasar Teori


3.2.1 Pencarian Data
Pencarian (searching) merupakan tindakan untuk mendapatkan
suatu data dalam kumpulan data. Dalam kehidupan sehari-hari, seringkali
kita berurusan dengan pencarian, misalnya untuk menemukan nomor
telepon seseorang pada buku telepon atau mencari suatu istilah dalam
kamus.
Terdapat beragam algoritma pencarian untuk keperluan mencari
data. Perlu diketahui yang di maksud dengan algoritma pencarian adalah
“algoritma yang menerima sebuah argument a dan mencoba untuk
menemukan sebuah rekaman yang memiliki kunci a”.
Pencarian data dilakukan terhadap data dapat dilakukan terhadap
data yang secara keseluruhan berada dalam memory computer ataupun
terhadap data yang berada dalam penyimpan eksternal.
Metode Searching dapat dibedakan menjadi 2, yaitu :
a. Metode Pencarian Beruntun (Sekuensial Search)
Konsep yang digunakan dalam metode ini adalah membandingkan
data-data yang ada dalam kumpulan tersebut, mulai dari elemen
pertama
sampai elemen ditemukan, atau sampai elemen terakhir.
b. Metode Pencarian Bagi Dua (Binary Search)
Metode ini diterapkan pada sekumpulan data yang sudah terurut
(menaik atau menurun). Metode ini lebih cepat dibandingkan metode
pencarian beruntun. Data yang sudah terurut menjadi syarat mutlak
untuk
menggunakan metode ini. Konsep dasar metode ini adalah membagi 2
jumlah elemennya, dan menentukan apakah data yang berada pada
elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai
data yang akan dicari. Jika bernilai sama, maka langsung data yang
dicari ditemukan. Jika data di elemen terurut naik, maka jika data yang
berada di tengah kurang dari data yang dicari, maka pencarian
selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya
sampai ketemu atau tidak sama sekali.
Dan sebaliknya untuk nilai data yang berada di tengah lebih dari
data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah
ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali.
Dan demikian sebaliknya untuk data yang terurut menurun. Dalam hal
ini tentukan indeks paling awal dan indeks paling akhir, untuk membagi
2 elemen tersebut.
Indeks awal = i, dimana nilai i, pada awalnya bernilai 0;
Indeks akhir = j, dimana nilai j, pada awalnya bernilai sama dengan
jumlah elemen.
3.2.2 Pengertian Sorting
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 :
5 6 8 1 3 25 10
Ascending : 1 3 5 6 8 10 25
Descending : 25 10 8 6 5 3 1
Sorting merupakan suatu proses untuk menyusun kembali
himpunan obyek menggunakan aturan tertentu. Sorting disebut juga
sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam
urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap
elemen. (Putra, Andreswari, & Susilo, 2015).
Metode-metode sorting yang akan dibahas kali ini meliputi:
1) Bubble sort (Metode Gelembung)
2) Insertion Sort (Metode Penyisipan)
3) Selection Sort (Metode Seleksi)
4) Quick Sort (Metode Quick)
3.2.3 Bubble Sort
Sorting merupakan suatu proses untuk menyusun kembali
himpunan
obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu
algoritma untuk meletakkan kumpulan elemen data kedalam urutan
tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.
Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting:
1) Urut naik (ascending)
Mengurutkan dari data yang mempunyai nilai paling kecil sampai
paling besar.
2) Urut turun (descending)
Mengurutkan dari data yang mempunyai nilai paling besar sampai
paling kecil.
Metode gelembung (bubble sort) sering juga disebut dengan
metode
penukaran (exchange sort) adalah metode yang mengurutkan data dengan
cara membandingkan masing-masing elemen, kemudian melakukan
penukaran bila perlu. Metode ini mudah dipahami dan diprogram, tetapi
bila
dibandingkan dengan metode lain yang kita pelajari, metode ini
merupakan
metode yang paling tidak efisien.
Algoritma Bubble Sort
1) 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
algoritma 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).
2) 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.
3) 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.
4) Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
3.2.4 Insertion Sort
Mirip dengan cara orang mengurutkan kartu, selembar demi
selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya.
Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika
ditemukan datayang lebih kecil, maka akan ditempatkan (di-insert)
diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen
lain akan bergeser ke belakang.
3.2.5 Selection Sort
Merupakan kombinasi antara sorting dan searching. Untuk setiap
proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki
nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di
dalam array. Misalnya untuk putaran pertama, akan dicari data dengan
nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]),
pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan
di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan
hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik
terjadi pada akhir proses.
3.2.6 Quick Sort
Quick sort merupakan divide and conquer algorithm. Algoritma ini
mengambil salah satu elemen secara acak (biasanya dari tengah) lalu
menyimpan semua elemen yang lebih kecil di sebelah kirinya dan semua
elemen yang lebih besar di sebelah kanannya. Quick Sort sebenarnya sama
seperti Merge sort yaitu menggunakan metode Divide & Conquer. Prinsip
dalam algoritma quicksort sebagai berikut:
1) Bila elemen dalam array kurang dari jumlah tertentu (biasanya 2),
proses selesai.
2) Ambil sebuah elemen yang berfungsi sebagai poros.
3) Pisahkan array dalam 2 bagian, sebelah kiri lebih kecil dari poros,
sebelah kanan lebih besar dari poros.
4) Ulangi proses secara rekursif pada tiap-tiap bagian.

3.3 Latihan
1. Latihan 1
a. Kode program
#include<iostream>
#include<conio.h>
using namespace std;
int cari (int data[], int n, int k)
{
int posisi, i, ketemu;
if (n<=0)posisi=-1;
else{ ketemu = 0; i=1;
while ((i<n-1)&&! ketemu) if (data[i] == k)
{
posisi=i; ketemu=1;
}
else i++;
if (!ketemu) posisi = -1;
}
return posisi;
}
int main()
{
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
int data [8];
int dicari;
cout <<"masukkan data : "; for(int a=0; a<8; a++)
{
cin>>data[a];
}
cout << "masukkan data yang dicari : "; cin >>dicari;
cout <<"posisi "<<dicari<<" dalam larik data
: "<<(cari(data, 8, dicari))<<"\n"; getch();
}
b. Flowchart
Gambar 3. 1 Flowchart Latihan 1
c. Output :

Gambar 3. 2 Output Latihan 1


d. Penjelasan
Pada gambar 3.2 merupakan hasil dari program diatas. Program
diatas adalah program yang menampilkan masukkan data. Program
tersebut memerintahkan agar memasukkan data selama 8 kali.
Kemudian program akan menampilkan masukkan data yang dicari
agar dapat mencari posisi dalam matrik data. Header yang digunakan
dalam program tersebut adalah iostream dan conio.h. iostream
adalah header yang menjalankan perintah cin dan cout. Sedangkan
conio.h merupakan header untuk membersihkan tampilan, dan
menahan tampilan.
2. Latihan 2
a. Kode program
#include<iostream>
using namespace std;
main(){
cout<<”Nama : DZIKRY ALFIAN\n”;
cout<<”NIM : 32602000024\n\n”;
int i,j,n,data[10],simpan,k;
cout<<"masukan banyak data= "; cin>>n;
for(i=1;i<=n;i++){ cout<<"data "<<i<<" = ";
cin>>data[i];
}
cout<<"awal = ";
for(i=1;i<=n;i++)
cout<<data[i]<<" ";
cout<<endl; for(i=1;i<n;i++){
for(j=1;j<n;j++){
if(data[j]>data[j+1]){ simpan=data[j];
data[j]=data[j+1];
data[j+1]=simpan;
}
}
}
cout<<"hasil= ";
for(i=1;i<=n;i++){
cout<<data[i]<<" ";
}
}
b. Flowchart

Gambar 3. 3 Flowchart Latihan 2


c. Output :

Gambar 3. 4 Output Latihan 2


d. Penjelasan
Pada gambar 3.4 merupakan hasil dari program diatas. Program
diatas adalah program yang menggunakan bahasa C++. Program
diatas merupakan program yang menampilkan masukkan banyak
data. Untuk mencari hasil dari sorting yang dilakukan pada program
tersebut. Header yang digunakan dalam program tersebut adalah
iostream. Iostream merupakan header yang menjalankan perintah
cin dan cout. Dan main merupakan program yang dijalankan paling
utama.

3.4 Tugas
1. Ubahlah script di bawah ini menggunakan bahasa C.
#include <iostream>
using namespace std;
int data[10],data2[10];
int n;
void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
void Input()
{
cout<<"Masukkan jumlah data = ";cin>>n;
cout<<"--------------------------------------"<<endl;
for(int i=0;i<n;i++)
{
cout<<"Masukkan data ke-"<<(i+1)<<" = ";cin>>data[i];
data2[i] = data[i];
}
cout<<endl;
}
void Tampil()
{
for(int i=0;i<n;i++)
{
cout<<data[i]<<" ";
}
cout<<endl;}
void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j--)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
Tampil();
}
cout<<endl;
}
main()
{
cout<<"* Bubble Sort *"<<endl;
Input();
cout<<"Proses Bubble Sort,,,,,,,"<<endl;
cout<<"-------------------------------------"<<endl;
Tampil();
bubble_sort();
cout<<"-------------------------------------"<<endl;}
Jawab :
a. Kode program
#include <stdio.h>
int data[10], data2[10], n;
void tukar(int a, int b){
int t;
t=data[b];
data[b]=data[a];
data[a]=t;
}
void input(){
printf("Masukkan jumlah data: "); scanf("%d", &n);
printf("------------------------------------\n");
int i;
for(i=0; i<n; i++){
printf("Masukkan data ke- %d = ", i+1);
scanf("%d",&data[i]); data2[i]=data[i];
}
printf("\n");
}
void tampil(){
int i;
for(i=0; i<n; i++){
printf("%d ", data[i]);
}
printf("\n");
}
void bubblesort(){
int i, j;
for(i=1; i<n; i++){
for(j=n-1; j>=i; j--){
if(data[j]<data[j-1]){
tukar(j,j-1);
}
}
}
tampil();
}
main(){
input();
printf("Nama : DZIKRY ALFIAN\n");
printf("NIM : 32602000024\n\n");
printf("Proses Bubble Sort\n");
printf("--------------------\n");
tampil();
bubblesort();
}
b. Flowchart

Gambar 3. 5 Flowchart Tugas 1


c. Output :

Gambar 3. 6 Output Tugas 1


c. Penjelasan
Pada gambar 3.6 merupakan hasil dari program di atas. Program
diatas merupakan program yang menggunakan bahasa C++. Program
diatas menampilkan *Bubble sort* kemudiam masukkan jumlah
data.
Program tersebut dijalankan dengan maksud untuk mengurutkan data
dengan menggunakan Bubble sort. Header yang digunakan dalam
program tersebut adalah iostream. Iostream merupakan header
yang menjalankan perintah cin dan cout. Tipe data yang digunakan
adalah void yaitu tipe data yang tidak bertipe dan memiliki jumlah
bit sebanyak 0 bit, void ini digunakan untuk memanggil sebuah
program.
2. Jalankan program agar menghasilkan tampilan berikut ini.

Gambar 3. 7 Output Soal 2


#include<iostream>
using namespace std;
int cari (int data[], int n,int k,int m){
int posisi,i,ketemu,pencacah=0;
if(n<=0)
posisi=-1;
else{
ketemu=0;
i=1;
while((i<n+1)&&! ketemu)
if(data[i] == k){
pencacah++;
cout<<"pencacah "<<pencacah<<endl;
if(pencacah!=m){
cout<<"ketemu"<<pencacah<<endl;
posisi=i;
ketemu=1;
}
else
i--;
}
else
i++;
if(!ketemu)
return posisi;
}}
int main(){
int data [9]={10,9,4,6,3,4,2,5,0};
int dicari;
int ke;
dicari=4;
ke=2;
cout<<"posisi "<<dicari<<" yang ke-"<<ke<<" dalam larik
data: "<<(cari(data,8,dicari,ke))<<"\n";
ke=1;
cout<<"posisi "<<dicari<<" yang ke-"<<ke<<" dalam larik
data: "<<(cari(data,8,dicari,ke))<<"\n";
dicari=0;
ke=1;
cout<<"Posisi "<<dicari<<" yang ke-"<<ke<<" dalam larik
data: "<<(cari(data,9,dicari,ke))<<"\n";
return 0;
}

Jawab :
a. Kode program
#include <iostream>
using namespace std;
int cari (int data[], int n,int k,int m)
{
int posisi,i,ketemu;
int pencacah=0;
if (n<=0)
posisi==1;
else
{
ketemu = 0;
i=0;
while ((i<n)&& ! ketemu)
{
if (data[i] == k)
{
pencacah++;
cout<<"Pencacah " <<pencacah <<endl;
if (pencacah==m)
{
cout<<"Ketemu"<<pencacah << endl;
posisi=1;
ketemu=1;
}
else
i++;
}
else
i++;
if (! ketemu);
posisi=-1;
}
}
return posisi;
}
int main()
{
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM: 32602000024\n\n";
int data [9]={10,9,4,6,3,4,2,5,0};
int dicari;
int ke;
dicari=4;
ke =2;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
ke =1;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
dicari=0;
ke=2;
cout<<"Posisi " <<dicari<<" yang ke-"<<ke<<" dalam
larik data; " <<cari(data,8,dicari,ke)<<"\n";
return 0;
}
b. Flowchart

Gambar 3. 8 Flowchart Tugas 2


c. Output
Gambar 3. 9 Output Tugas 2

d. Penjelasan
Pada gambar 3.9 merupakan hasil dari program diatas. Program
diatas merupakan program yang menampilkan pencacah 1, pencacah
2, posisi 4 yang ke 2 dalam larik data, pencacah 1, ketemu 1, posisi 4
yang ke-1 dalam larik data, posisi 0 yang ke-1 dalam larik data.
Header yang digunakan dalam program tersebut adalah iostream.
Iostream merupakan header untuk menjalankan perintah cin dan
cout. Main merupakan perintah pertama yang dijalankan oleh
program tersebut.
3. Ubahlah script pada Latihan 1 dengan metode Insertion Sort secara
descending.
Jawab :
a. Kode program
#include<iostream>
using namespace std;
int A[]={2,3,4,6,7,8,9,1,5,0};
int n=10;
void sortingdesc()
{
int i,j,temp;
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(A[j]>A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void show(){
int i;
for(i=0;i<n;i++){
cout<<A[i]<<" ";
}
}
int main(){
int pil;
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Program Shorting Array\n"<<endl;
cout<<"Sebelum di Urutkan = ";
show();
cout<<"\nData Descending tekan 1 dan enter\n\n";
cout<<"Input Pilihan Anda : ";
cin>>pil;
switch(pil)
{
case 1:
sortingdesc();
cout<<"\ndata setelah diurutkan\n\ndescending : ";
show();
break;
}
}
b. Flowchart
Gambar 3. 10 Flowchart Tugas 3

c. Output
Gambar 3. 11 Output Tugas 3
d. Penjelasan
Pada gambar 3.11 merupakan hasil dari proram diatas. Program
diatas merupakan program yang menghasilkan tampilan Program
Shorting Array, yang menghasilkan urutan nomor secara descending
dengan menggunakan intersection sort. Program diatas adalah
program yang menggunakan bahasa C++. Dengan menggunakan
header iostream. Iostream adalah header yang digunakan untuk
menjalankan perintah cin dan cout. Dan main adalah yang pertama
dijalankan oleh iostream.
4. Buatlah program pengurutan data dengan menggunakan semua metode
pengurutan untuk mengurutkan angka secara ascending dan
descending.
Jawab :
1. Descending

a. Kode program
#include<iostream>
#include<conio.h>
#include<iomanip>
#include<time.h>
#include<windows.h>
#define MAX 1
using namespace std;
int A[]={2,3,4,6,7,8,9,5,0};
int n=10;
void sortingdesc()
{
int i,j,temp;
for (i=0;i<n;i++){
for(j=n-1;j>i;j--){
if (A[j]>A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void sortingascen(){
int i,j,temp;
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(A[j]<A[j-1]){
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
}
}
}
void show(){
int i;
for(i=0;i<n;i++){
cout<<A[i]<<" ";
}
}
int bubblesort();
int selectionsort();
int insertionsort();
int pilihan, hitung,i;
char ulang, pilih;
char nx[10];
int data[MAX];
int data1[100];
int temp;
int pil;
int cek(char str[]){
int i, panjang;
panjang=strlen(str);
for(i=0;i<panjang;i++){
if((i==0)&&(str[i]=='-'))
i++;
if(!isdigit(str[i])){
cout<<"Input salah! Ulangi input!\n";
return 0;
}
}
return 1;
}
int main(){
int pil;
awal:
system("cls");
do{
system("cls");
int pil;
int n;
for(hitung=0;hitung<8;hitung++)
data1[hitung]=data[hitung];
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Program full metode sorting ";
cout<<endl<<endl;
cout<<"Masukan banyak data: ";
cin>>nx;
cout<<endl;
}
while(!cek(nx));
n=atoi(nx);
int data[100];
srand(time(NULL));
int i;
for(i=0;i<n;i++){
data[i]=rand()%n;
cout<<data[i]<<" ";
}
cout<<endl;
{
for(hitung=0;hitung<n;hitung++)
data1[hitung]=data[hitung];
cout<<"\nMetode sorting\n1. Bubble sort\n2. Selection
sort\n3. Insertion sort\n";
cout<<"Masukan pilihan: ";
cin>>pil;
cout<<"-------------------------------\n";
cout<<"pilihan pengurutan Ascending Descending[1/2]? ";
cin>>pil;
switch(pil){
case 1:
sortingascen();
cout<<"\nData setelah diurutkan\n\ascending: ";
show();
break;
case 2:
sortingdesc();
cout<<"\nData setelah diurutkan\n\ndescending: ";
show();
break;
}cout<<endl;
}cout<<endl;
}
int bubblesort(){
cout<<"================================= \n";
for(int i=0;i<n-1;i++)
for(int ii=0; ii<n-1;ii++)
if(data1[ii]>=data1[ii+1]){
temp=data1[ii];
data1[ii]=data1[ii+1];
data1[ii+1]=temp;
}
if(pilih=='a'){
cout<<"Menjalankan metode bubble sort denga pengurutan
Ascending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0; iii<n;iii++)
cout<<data1[iii]<<" ";
}
if(pilih=='d'){
cout<<"Menjalankan metode bubblesort dengan pengurutan
Descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0;iii<n-1;iii--)
cout<<data1[iii]<<" ";
}
cout<<"\n";
}
int selectionsort(){
cout<<"===============================\n";
int kecil;
for(int i=0;i<n;i++){
kecil=i;
for(int j=kecil+1;j<n;j++){
if(data1[kecil]>data1[j]){
kecil=j;
}
}
temp=data1[i];
data1[i]=data1[kecil];
data1[kecil]=temp;
}
if(pilih=='a'){
cout<<"Menjalankan metode Bubble sort dengan pengurutan
desceding ";
cout<<"\n\nHasil pengurutan: \n\n";
for(int iii=0;iii<n;iii++)
cout<<data1[iii]<<" ";
}
if(pilih=='d'){
cout<<"Menjalankan metode Bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int iii=0;iii<n-1;iii--)
cout<<data1[iii]<<" ";
}
cout<<"\n";
}
int insertionsort(){
cout<<"=================================\n";
int gap=n/2;
do{
int swap;
do{
swap=0;
for(int i=0;i<n-gap;i++)
if(data1[i]>data1[i+gap]){
int t=data1[i];
data1[i]=data1[i+gap];
data1[i+gap]=t;
swap=1;
}
}
while(swap);
}
while (gap=gap/2);
if(pilih=='a'){
cout<<"Menjalankan metode bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int i=0; i<n;i++)
cout<<data1[i]<<" ";
}
if(pilih=='d'){
cout<<"menjalankan metode bubble sort dengan pengurutan
descending ";
cout<<"\n\nHasil pengurutan : \n\n";
for(int i=0;i<n-1;i--)
cout<<data1[i]<<" ";
}
cout<<endl;
return 0;
}
b. Flowchart

Gambar 3. 12 Flowchart Tugas 4


c. Output

Gambar 3. 13 Output Tugas 4 Bubble Sort

Gambar 3. 14 Output Tugas 4 Selection Sort


Gambar 3. 15 Output Tugas 4 Insertion Sort
d. Penjelasan
Pada gambar 3.13, 3.14, 3.15 merupakan hasil dari program
yang dijalankan diatas. Program diatas adalah program yang
menggunakan bahasa C++. Program diatas merupakan program yang
menampilkan data sebelum diurutkan dan memberikan perintah
untuk menekan 1/2 dan enter untuk mencari data yang telah
diurutkan. Awalnya user akan diminta untuk menginputkan
banyaknya data yang akan digunakan untuk metode sorting.
Kemudian akan ada pilihan metode sorting yaitu 1 untuk bubble
sorting, 2 untuk selection sorting, 3 untuk insertion sorting.
Kemudian setelah memilih metode pengurutan maka akan ada
pilihan untuk menampilkan program tersebut secara ascending atau
descending. Header yang digunakan dalam program tersebut adalah
iostream, conio.h, time.h, windows.h dan define MAX 1.
2. Ascending

a. Kode program
#include<iostream>
using namespace std;
main()
{
int nilai ['n'], temp,n;
cout<<"Nama : DZIKRY ALFIAN\n";
cout<<"NIM : 32602000024\n\n";
cout<<"Banyak data: ";
cin>>n;
cout<<endl;
for(int a=1;a<=n;a++){
cout<<"nilai["<<a<<"]: ";
cin>>nilai[a];
}
cout<<"\n\n";
cout<<"data sebelum diurutkan\n";
for(int a=1;a<=n;a++){
cout<<nilai[a]<<" ";
}
for(int a=n-1;a>=1;a--){
for(int b=1;b<=a;b++){
if(nilai[b]>nilai[b+1]){
temp=nilai[b+1];
nilai[b+1]=nilai[b];
nilai[b]=temp;
}
}
}
cout<<"\n\nData setelah durutkan(Ascending)\n";
for(int a=1;a<=n;a++){
cout<<nilai[a]<<" ";
}
}
b. Flowchart

Gambar 3. 16 Flowchart Tugas 4 Ascending


c. Output

Gambar 3. 17 Output Tugas 4 Ascending


d. Penjelasan
Pada gambar 3.17 merupakan hasil dari program yang
dijalankan diatas. Program diatas adalah program yang
menggunakan bahasa C++. Data ini diurutkan dari nilai terkecil ke
nilai yang paling terbesar (Ascending). Pengguna akan diminta
memasukkan banyaknya data yang akan digunakan untuk pengurutan
data. Pengguna selanjutnya memasukkan nilai sebanyak data yang
dimasukkan sebelumnya. Kemudian akan disusun data itu tapi belum
urut. Setelah itu program akan mengurutkan angka itu secara
otomatis dari terkecil ke terbesar.
5. Ubahlah script dibawah ini dengan menggunakan bahasa Java
#include<stdio.h>
void tampilkan_larik (int data[], int n){
int i;
for(i=0;i<n;i++)
printf("%d", data[i]);
printf("\n");
}
int partisi(int data[],int p,int r){
int pivot=data[r];
int i=p-1;
int j;
for(j=p;j<r;j++){
if(data[j]<=pivot){
i++;
int tmp=data[i];
data[i]=data[j];
data[j]=tmp;
}
}
int tmp=data[i+1];
data[i+1]=data[r];
data[r]=tmp;
return i+1;
}
void quick_sort(int data[],int p, int r){
int q;
if(p<r){
q=partisi(data,p,r);
quick_sort(data,p,q-1);
quick_sort(data,q+1,r);
}
}
int main(){
int jum_data=9;
int i;
int data[]={25,57,48,37,12,92,80,33,1};
quick_sort(data,0,jum_data-1);
printf("hasil pengurutan: \n");
tampilkan_larik(data, jum_data);
return 0;
}
Jawab :
a. Kode program
public class Main
{
static void tampilkan_larik (int data[],int n)
{
int i;
for(i=0;i< n ;i++){
System.out.print(data[i]+" ");
}
System.out.println("");
}
static int partisi(int data[],int p,int r)
{
int pivot= data[r];
int i = p-1;
int j;
for (j=p;j<r;j++)
{
if (data[j]<= pivot)
{
i++;
int tmp = data[i];
data[i]= data[j];
data[j]= tmp;
}
}
int tmp = data[i+1];
data[i+1]= data[r];
data[r]= tmp;
return i+1;
}
static void quick_sort(int data[],int p,int r)
{
int q;
if (p<r)
{
q = partisi(data,p,r);
quick_sort(data,p,q-1);
quick_sort(data,q+1,r);
}
}
public static void main(String[] args)
{
String NAMA,NIM;
NAMA = "DZIKRY ALFIAN";
NIM = "32602000024";
System.out.println("NAMA\t : " +NAMA);
System.out.println("NIM\t : " +NIM);
int jum_data = 9;
int i;
int data[]= {25,57,48,37,12,92,80,33,1};
quick_sort(data,0,jum_data-1);
System.out.println("hasil pengurutan : ");
tampilkan_larik(data,jum_data);
}
}
b. Flowchart

Gambar 3. 18 Flowchart Tugas 5


c. Output

Gambar 3. 19 Output Tugas 5


d. Penjelasan
Program diatas merupakan program yang menggunakan bahasa
Java yang menampilkan data seelum dan sesudah diurutkan. Dan
memberikan perintah untuk memassukkan data agar mendapatkan
hasil pengurutan yang benar. Pengguna akan memasukkan banyak
data yang akan digunakan. Kemudian data yang sama akan
dimasukkan oleh pengguna. Data inilah yang akan digunakan
sebagai acuan untuk melakukan sorting. Sorting ini akan
menjalankan sorting dari bilangan terkecil ke terbesar atau biasa
disebut ascending. Header yang digunakan pada program tersebut
adalah iostream dan conio.h. iostream merupakan header yang
melakukan perintah cin dan cout.

3.5 Kesimpulan
Pada BAB III ini kita mempelajari tentang sorting dan searching.
Sorting merupakan suatu proses untuk menyusun kembali humpunan
obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu
algoritma untuk meletakkan kumpulan elemen data kedalam urutan
tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.
Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu
proses sorting:
1. Urut naik (ascending) mengurutkan dari data yang mempunyai nilai
paling kecil sampai paling besar.
2. Urut turun (descending) Mengurutkan dari data yang mempunyai nilai
paling besar sampai paling kecil.

Anda mungkin juga menyukai