Anda di halaman 1dari 12

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN

MODUL 7
“SORTING”

DISUSUN OLEH :
MUTIA RANI ZAHRA MEILANI
2311102182
S1-IF-11-E

DOSEN PEMBIMBING :
IBU YOHANI SETYA RAFIKA NUR, S.KOM

PROGRAM STUDI S1 TEKNIK INFORMATIKA


FAKULTAS INFORMATIKA
INSTITUT TEKNOLOGI TELKOM PURWOKERTO
TAHUN 2023
DASAR TEORI

Sorting adalah proses sederetan data ke dalam suatu urutan atau susunan tertentu. Data
yang diurutkan dapat berupa data bilangan, karakter maupun string. Hal yang dapat
mempengaruhi kecepatan Algoritma sorting adalah jumlah operasi perbandingan dan jumlah
operasi pemindahan data. Terdapat macam macam metode sorting, antara lain yaitu :
1. Selection Sorting
Metode ini membagi daftar menjadi dua bagian, bagian yang sudah diurutkan dan yang
belum diurutkan. Di setiap iterasi, mencari elemen terkecil dari bagian yang belum
diurutkan dan menukarnya dengan elemen di posisi terdepan dari bagian yang belum
diurutkan. Proses ini berlanjut hingga seluruh daftar terurut.
2. Bubble Sorting
Proses dari metode ini adalah membandingkan elemen berpasangan, dan menukar
mereka jika urutannya tidak benar. Iterasi ini terus berlanjut sampai tidak ada lagi
pertukaran yang perlu dilakukan, yang menunjukkan daftar sudah terurut.
3. Insertion Sorting
Metode ini memperlakukan daftar sebagai bagian terurut dan bagian yang belum
diurutkan. Pada setiap langkahnya, mengambil elemen dari bagian belum diurutkan dan
memasukkannya ke posisi yang benar dalam bagian yang terurut, sehingga bagian terurut
bertambah satu elemen setiap langkahnya.

Penggunaan pengurutan (sorting) data memiliki beberapa tujuan utama:


1. Mempermudah pencarian menjadi lebih efisien.
2. Meningkatkan performa algoritma lain.
3. Membantu dalam analisis data
4. Meningkatkan efisiensi operasi pada Database
GUIDED 1
SOURCE CODE
#include <iostream>

using namespace std;

void bubble_sort(double arr[], int lenght){


bool not_sorted = true;
int j = 0;
double temp;

while (not_sorted)
{
not_sorted = false;
j++;
for (int i = 0; i < lenght-j; i++)
{
if (arr[i]>arr[i+1])
{
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
not_sorted = true;
}

void print_array(double a[], int lenght){


for (int i = 0; i < lenght; i++)
{
cout << a[i] << "\t";
}
cout << endl;
}
int main(){
int lenght = 5;
double a[] = {22.1, 15.3, 8.2, 33.21, 99.99};

cout << "Urutan bilangan sebelum sorting : " << endl;


print_array(a, lenght);
bubble_sort(a, lenght);

cout << "Urutan bilangan setelah sorting : " << endl;


print_array(a, lenght);
}
SCREENSHOT OUTPUT

DESKRIPSI PROGRAM
Program ini mengurutkan larik bilangan pecahan dari kecil ke besar dengan cara melakukan
perbandingan antara pasangan-pasangan elemen dalam larik dan menukar posisi jika diperlukan.
Fungsi bubble_sort mengimplementasikan algoritma tersebut, sementara fungsi print_array
digunakan untuk mencetak elemen-elemen larik sebelum dan sesudah pengurutan

GUIDED 2
SOURCE CODE
#include <iostream>

using namespace std;

void insertion_sort(char arr[], int length) {


int i, j;
char temp;

for (i = 1; i < length; i++)


{
j=i;

while (j>0 && arr[j-1] > arr[j])


{
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
j--;
}

void print_array(char a[], int length) {


for(int i = 0; i < length; i++){
cout << a[i] << "\t";
}
cout << endl;
}

int main(){
int length = 6;
char a[length] = {'c', 'f', 'a', 'z', 'd', 'p'};
cout << "Urutan char sebelum sorting : " << a << endl;
print_array(a, length);

insertion_sort(a, length);
cout << "Urutan char setelah sorting : " << a << endl;
print_array(a, length);
}

SCREENSHOT OUTPUT

DESKRIPSI PROGRAM
Program ini bekerja dengan cara membandingkan elemen-elemen yang ada dengan elemen-
elemen sebelumnya, lalu menyisipkan elemen tersebut ke posisi yang tepat sesuai dengan urutan
yang diinginkan. Proses ini terus berlanjut hingga seluruh elemen dalam array terurut. Setelah
proses pengurutan selesai, program akan menampilkan urutan karakter sebelum dan sesudah
proses pengurutan dilakukan.

UNGUIDED 1
SOURCE CODE
#include <iostream>

using namespace std;

void selection_sort(double arr[], int n)


{
double temp;
int pos_min;
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 print_array(double arr[], int length){


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

int main(){
int length = 5;
double a[] = {3.8, 2.9, 3.3, 4.0, 2.4};

cout << "Nilai Mahasiswa Kelas IF2016 G : " << endl;


print_array(a, length);

selection_sort(a, length);

cout << "Nilai Mahasiswa Kelas IF2016 G (sorted): " << endl;
print_array(a, length);

return 0;
}

SCREENSHOT OUTPUT
DESKRIPSI PROGRAM
Program ini bekerja dengan cara mencari elemen terkecil dari array dan menukarnya dengan
elemen pertama, lalu mencari elemen terkecil kedua dari sisa array dan menukarnya dengan
elemen kedua, dan begitu seterusnya hingga seluruh array terurut. Setelah proses pengurutan
selesai, program akan menampilkan nilai-nilai mahasiswa kelas tertentu sebelum dan sesudah
pengurutan dilakukan.

UNGUIDED 2
SOURCE CODE
#include <iostream>

using namespace std;

void bubble_sort(string arr[], int length) {


bool not_sorted = true;
int j = 0;
string temp;

while (not_sorted) {
not_sorted = false;
j++;
for (int i = 0; i < length - j; i++) {
if (arr[i] > arr[i + 1]) {
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
not_sorted = true;
}
}
}
}

void print_array(string a[], int length) {


for (int i = 0; i < length; i++) {
cout << a[i] << "\t";
}
cout << endl;
}
int main() { SCREENSHOT OUTPUT
int length =
10;
string names[]
= {"Siti", "Situ",
"Sana", "Ana",
"Ani", "Caca",
"Cici", "Dida",
"Dodo", "Dadi"};

cout << "Nama


sebelum sorting: "
<< endl;

print_array(names,
length);

bubble_sort(names,
length);

cout << "Nama


setelah sorting: "
<< endl;

print_array(names,
length);

return 0;
}

DESKRIPSI PROGRAM
Program ini bekerja dengan cara membandingkan pasangan elemen berturut-turut dalam array
dan menukarnya jika tidak berada dalam urutan yang benar. Proses ini terus berlanjut,
menggeser elemen-elemen yang lebih kecil atau lebih besar ke ujung array sampai seluruh array
terurut. Setelah proses pengurutan selesai, program akan menampilkan daftar nama sebelum dan
sesudah proses pengurutan dilakukan.
UNGUIDED 3
SOURCE CODE
#include <iostream>

using namespace std;

void bubble_sort_asc(char arr[], int length)


{
bool not_sorted = true;
int j = 0;
char temp;

while (not_sorted)
{
not_sorted = false;
j++;
for (int i = 0; i < length - j; i++)
{
if (arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
not_sorted = true;
}
}
}
}

void bubble_sort_des(char arr[], int length)


{
bool not_sorted = true;
int j = 0;
char temp;

while (not_sorted)
{
not_sorted = false;
j++;
for (int i = 0; i < length - j; i++)
{
int main()
{
int length;

// INPUT JUMLAH
cout << "= INPUTKAN JUMLAH =" << endl;
cin >> length;

char arr[length];

// INPUT KARAKTER
cout << "= MASUKAN KARAKTER =" << endl;
for (int i = 0; i < length; i++)
{
cout << "Karakter ke - " << i + 1 << " : ";
cin >> arr[i];
}

// PRINT ARRAY
cout << "Urutan Karakter : " << endl;
for (int i = 0; i < length; i++)
{
cout << arr[i] << " ";
}

cout << endl;

// ASCENDING
bubble_sort_asc(arr, length);

cout << "Urutan Karakter (Ascending) : " << endl;


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

// DESCENDING
bubble_sort_des(arr, length);

cout << "Urutan Karakter (Descending) : " << endl;


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

return 0;
}
SCREENSHOT OUTPUT

DESKRIPSI PROGRAM
Program ini menggunakan bubble sort yang meminta pengguna memasukkan jumlah karakter
dan karakter-karakternya, lalu menampilkan urutan awal. Fungsi bubble_sort_asc mengurutkan
karakter dari kecil ke besar, sementara bubble_sort_des mengurutkan dari besar ke kecil. Setelah
kedua pengurutan selesai, program menampilkan urutan karakter secara menaik dan menurun
sesuai fungsi yang dipanggil.
DAFTAR PUSTAKA

[1] Asisten Praktikum, “Modul 7 Sorting”, Google Classroom, 2023.


[2] Rafika Y.S, “Sorting”, Learning Management System, 2023

Anda mungkin juga menyukai