Anda di halaman 1dari 15

LAPORAN PRAKTIKUM

“SORTING II”

MODUL X – ALGORITMA PEMROGRAMAN

Nama : Muhammad Albirra Arsyi Rizqi

NIM 20103054

Kelas : SI-04-B

PROGRAM STUDI S1 SISTEM INFORMASI


FAKULTAS INFORMATIKA
INSTITUT TEKNOLOGI TELKOM PURWOKERTO
PURWOKERTO
2020
DASAR TEORI

A. Konsep Dasar Searching


Pencarian (searching) merupakan proses yang fundamental dalam
pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu di
dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe
bentukan). Sebagai contoh, untuk mengubah (update) data tertentu, langkah
pertama yang harus dilakukan adalah mencari keberadaan data tersebut didalam
kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah
nilainya dengan data yang baru. Aktivitas awal yang sama juga dilakukan pada
proses penambahan (insert) data baru. Proses penambahan data dimulai dengan
mencari apakah data yang akan ditambahkan sudah terdapat di dalam
kumpulan. Jika sudah ada dan mengasumsi tidak boleh ada duplikasi data maka
data tersebut tidak perlu ditambahkan, tetapi jika belum ada, maka tambahkan.

B. Selection Sort\
Suatu teknik pencarian data dalam array yang akan menelusuri semua elemen
elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan
terlebih dahulu. Kemungkinan terbaik (best case) adalah jika data yang dicari
terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang
dibutuhkan untuk pencarian data sangat sebentar (minimal). Kemungkinan
terburuk (worst case) adalah jika data yang dicari terletak di indeks array
terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk
pencarian data sangat lama (maksimal).
pos_min=j;
}
if (pos_min != i) {
temp = arr[i];
arr[i] =
arr[pos_min];
arr[pos_min] = temp;
}

C. Insertion Sort
Algoritme pengurutan dengan cara menyisipkan data/elemen larik pada
posisi yang tepat. Pencarian posisi yang sesuai dilakukan dengan menyisir
larik. Selama penyisiran larik dilakukan pergeseran elemen larik. Algoritme
pengurutan ini cocok untuk persoalan menyisipkan elemen baru kedalam
sekumpulan elemen yang sudah terurut. Pengurutan dimulai dari data ke-2
sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan
ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen,
maka elemen-elemen lain akan bergeser ke belakang.
Pengurutan dengan cara penyisipan :
 Anggap elemen ke–1 sampai dengan elemen ke j telah terurut.
 Elemen ke i adalah elemen yang akan disisipkan antara elemen yang
telah terurut (1 sampai j) pada posisi yang tepat, misalnya pada p.
Pencarian posisi yang tepat untuk i adalah sebagai berikut :
 Simpan l[i] pada suatu variabel temporer, temp.
 Geser elemen j ke bekas tempat i kemudian geser elemen j – 1 ke i –
1, dan seterusnya sampai mencapai posisi yang tepat untuk i, yaitu p

Pseudocode dari Insertion Sort :


for i = 1 to n-1
set j = i
set t =
a[j]
repeat while j > 0 and a[j-1] > t
move a[j-1] to right
end repeat
set a[j] = t
end for

Kode Program :
int arr[ ];
int i, j ,ruangTukar, panjangArray;
for (i = 1; i < panjangArray; i++) {
j = i;
while (j > 0 && arr[j - 1] > arr[j])
{ ruangTukar = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] =
ruangTukar; j--;
}
}

TUGAS GUIDED

1. LATIHAN 1

Buatlah fungsi/prosedur untuk mengurutkan secara Ascending dan


Descending data bertipe desimal dengan menggunakan algoritma
Selection sort.

#include <iostream>
using namespace std;

const int panjangArray = 4;


char arr[panjangArray] = {'i', 'c', 'z', 'a'};
char temp;
int pos_min,n;

void sSortASC(char data[], int n)


{ for (int i=0; i < n-1; i++) {
pos_min = i;
for (int j=i+1; j < n; j++) {
if (arr[j] <
arr[pos_min])
pos_min=j;
}
if (pos_min != i) {
temp = arr[i];
arr[i] =
arr[pos_min];
arr[pos_min] = temp;
}
}

void sSortDESC(char data[], int n)


{ for (int i=0; i < n-1; i++) {
pos_min = i;
for (int j=i+1; j < n; j++) {
if (arr[j] >
arr[pos_min])
pos_min=j;
}
if (pos_min != i) {
temp = arr[i];
arr[i] =
arr[pos_min];
arr[pos_min] = temp;
}
}

}
for(int i = 0; i < panjangArray; i++)
{ cout << arr[i] << ", ";
}

sSortASC(arr, panjangArray);
cout << "\nAscending : ";
for(int i = 0; i < panjangArray; i++)
{ cout << arr[i] << ", ";
}

sSortDESC(arr, panjangArray);
cout << "\nDescending : ";
for(int i = 0; i < panjangArray; i++)
{ cout << arr[i] << ", ";
}
return 0;
}

Figure 1. Program 1

2. LATIHAN 2

Buatlah fungsi/prosedur untuk mengurutkan secara Ascending dan

Descending data sekumpulan kata menggunakan algoritma insertion sort.


Figure 2. Program 2

#include <iostream>
using namespace std;

const int panjangArray = 4;


string datautama [panjangArray] = {"Tinky winky", "Dipsy", "Lala", "Asep"};

void insertionSortAsc (string data[], int panjang){


string tempatTukar;
int j;
for (int i = 1; i < panjang; i++){
j = i;
while (j > 0 && data [j] < data [j-1]){
tempatTukar = data[j];
data [j] = data [j-1];
data[j-1] =
tempatTukar; j--;
}
}
}
void insertionSortDesc (string data[], int panjang){
string tempatTukar;
int j;
for (int i = 1; i < panjang; i++){
j = i;
while (j > 0 && data [j] > data [j-1]){
tempatTukar = data[j];
data [j] = data [j-1];
data[j-1] =
tempatTukar; j--;
}
}
}
int main()
{
cout<<"ASCENDING"<<endl;
insertionSortAsc (datautama,
panjangArray);
for (int i = 0; i < panjangArray; i++){
cout << datautama [i] << " ";
}
cout<<endl<<endl;
cout<<"DESCENDING"<<endl;
insertionSortDesc (datautama, panjangArray);
for (int i = 0; i < panjangArray; i++){
cout << datautama [i] << " ";
}
cout<<endl;
return 0;
}
TUGAS UNGUIDED
1. Buatlah array 2 dimensi bertipe data float berukuran 5 x
5, kemudian isi array dengan data acak tak urut kemudian
urutkan dengan algoritma selection sort.

Figure 3. Program 3

#include <iostream>
using namespace std;

float a[5][5];
int baris,kolom,x;
float temp;

void urutdata(){
for(int i = 0; i<x; i++)
{ for(int j = 0; j<x; j+
+){
baris = i;
kolom = j;
for(int k = 0; k<x; k++)
{ for(int l = 0; l<x; l+
+){
if(a[baris][kolom]<a[k][l]){
baris = k;
kolom = l;
}
temp=a[i][j]; a[i]
[j]=a[baris][kolom];
a[baris][kolom]=temp;
}
}
}
}
}

int main()
{
cout<<"Masukan data:
"; cin>>x;

for(int i = 0; i<x; i++)


{ for(int j = 0; j<x; j+
+){
cout<<"Data["<<i<<"]["<<j<<"]:";
cin>>a[i][j];
}
}
urutdata();
for(int i = 0; i<x; i++)
{ for(int j = 0; j<x; j+
+){
cout<<" "<<a[i][j];
}
cout<<endl;
2. Buatlah program yang meminta user menginputkan suatu
bilangan n dan meminta user untuk menginputkan
sejumlah n karakter. Kemudian program akan melakukan
sorting secara menaik (ascending) dan menurun
(descending)!

Figure 4. Program 4

#include <iostream>
using namespace std;

int jumlah,i, j;
int tukar;
int arr[50];

int ascending(int jumlah,int arr[])


{ for (i = 1; i < jumlah; i++) {
j = i;
while (j > 0 && arr[j - 1] > arr[j])
{ tukar = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] =
tukar; j--;
}
}
}
int descending(int jumlah,int arr[]){
for (i = 1; i < jumlah; i++) {
j = i;
while (j > 0 && arr[j - 1] < arr[j]) {
tukar = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] =
tukar; j--;
}
}
}
int main()
{
cout<<"Masukkan Jumlah Array : ";
cin>>jumlah;
cout<<"Masukan Elemen Aray Sebanyak "<<jumlah<< endl;
for(i=0; i<jumlah; i++){
cout << "Masukkan Elemen ke " << i+1 << " : ";
cin >> arr[i];
cout << endl;
}
ascending(jumlah, arr);
cout<<"ASCENDING : ";
for(i=0; i<jumlah; i++)
cout<<arr[i]<<" ";
cout<<endl;

descending(jumlah,arr);
cout<<"DESCENDING : ";
for(i=0; i<jumlah; i++)
cout<<arr[i]<<" ";
cout<<endl;

return 0;
}

3. Lakukan analisa, untuk mencari kelebihan dan


kekurangan darimasing-masing algoritme pengurutan
(Bubble Sort, Selection Sort, dan Insertion Sort)

1. Bubble Sort, metode dengan cara melakukan penukaran atau


membandingkan data dengan sebelahnya secara terus menerus sampai
dapat dipastikan dalam satu iterasi tertentu tidak dapat lagi
dibandingkan. Oleh karenanya :
 Kelebihan : mudah dipahami dan sederhana
 Kekurangan : jika datanya banyak maka metode ini sangat
lambat, dan pengulangan tetap akan di lakukan sampai data
terakhir walaupun data sudah terurut
2. Selection Sort, metode membandingkan data yang pertama dengan
data selanjutnya sampai dengan data yang terakhir. Jika ditemukan
data lain yang lebih kecil atau lebih besar dari data sekarang maka
dicatat posisinya dan kemudian ditukar. Oleh karenanya :
 Kelebihan : operasi pertukarannya hanya sekali saja dan waktu
lebih cepat.
 Kekurangan : kode yang panjang
3. Insertion Sort, metode pengurutan sebuah data dengan cara
menyisipkan elemen larik pada posisi yang tepat. Oleh karenanya :
 Kelebihan : sederhana, cepat
 Kekurangan : Banyaknya operasi yang diperlukan
dalam mencari posisi yang tepat untuk elemen larik
KESIMPULAN

Terdapat 3 metode Sorting yaitu Bubble Sort, Selection Sort, dan Insertion Sort.
Ketiganya memiliki kelebihan dan kekurangannya masing-masing.
Sumber

A.Munir, Rinaldi dan Lidya, Leony. 2016. Algoritma dan Pemrograman dalam

Bahasa Pascal, C, dan C++; Edisi Keenam. Bandung: Penerbit Informatika.


Harris, Simon dan Ross, James. 2006. Beginning Algorithms. Indianapolis,

Anda mungkin juga menyukai