You are on page 1of 17

LAPORAN ALGORITMA SORTING DAN

ALGORITMA SEARCHING

Di susun oleh:
Michael : 213030503153(B)
Adrian :213030503174

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKARAYA
2022
Kata Pengantar

Alhamdulillah, puji syukur kehadirat Allah SWT yang telah memberikan rahmat dan inayah-
Nya sehingga kami dapat menyelesaikan Laporan tugas yang berjudul Algoritma sorting dan
algoritma searching.

Terima kasih saya ucapkan kepada Bapa Ade Chandra Saputra,S.Kom.,M.Cs yang telah
membantu kami baik secara moral maupun materi. Terima kasih juga saya ucapkan kepada
teman-teman seperjuangan yang telah mendukung kami sehingga kami bisa menyelesaikan
tugas ini tepat waktu.

Kami menyadari, bahwa laporan Tugas yang kami buat ini masih jauh dari kata sempurna
baik segi penyusunan, bahasa, maupun penulisannya. Oleh karena itu, kami sangat
mengharapkan kritik dan saran yang membangun dari semua pembaca guna menjadi acuan
agar penulis bisa menjadi lebih baik lagi di masa mendatang.

Semoga laporan Tugas ini bisa menambah wawasan para pembaca dan bisa bermanfaat
untuk perkembangan dan peningkatan ilmu pengetahuan.

Palangka Raya, 23 Mei 2022


BAB I
PEMBUKA

1.Latar Belakang
Prosedur yang berisi langkah-langkah penyelesaian masalah disebut algoritma.

Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah.

Terdapat beberapa definisi lain dari algoritma - tetapi pada prinsipnya adalah sama, dengan
definisi yang diungkapkan di atas - yang kita kutip dari berbagai literatur, antara lain:

Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data


masukan menjadi keluaran.

Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu
memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang
terbatas.

Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan
beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran.
Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan
menjadi keluaran.

Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara primitif yaitu
aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya
bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat menyebabkan kejadian.

Algoritma merupkan urutan perintah atau langkah-langkah logis penyelesaian masalah yang
disusun secara sistematis dan logis.

Algoritma berasal dari nama penulis buku, yakni Abu Ja`far Muhammad Ibnu Musa Al-
Khwarizmi yang berasal dari Uzbekistan. Orang Barat menyebut Al-Khwarizmi dengan
Algorism.
Pada saat itu, Al-Khwarizmi menulis buku dengan judul Al Jabar wal-Muqabala yang artinya
`Buku Pemugaran dan Pengurangan` (The book of Restoration and Reduction). Dari judul
buku tersebut, kita juga memperoleh kata “aljabar” atau biasa dikenal dengan algebra.
Abu Abdullah Ibnu Musa al-Khawarizmi (770M-840M) lahir di Khawarizm (Kheva), kota yang
berada di selatan Sungai Oxus (sekarang disebut Uzbekistan) pada 770 M. Al Khawarizmi
merupakan salah satu ilmuan terkenal di zamannya. Ada beberapa cabang ilmu matematika
yang berhasil ditemukannya, antara lain yang dikenal sebagai astronom dan geografer.
Awalnya, algoritma merupakan istilah yang merujuk kepada aturan-aturan aritmetis yang
berguna untuk menyelesaikan persoalan dengan menggunakan bilangan numeric Arab.

Pada tahun 1950, kata algoritma pertama kali digunakan pada "algoritma Euclidean"
(Euclid`s algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M),
dalam bukunya yang berjudul Element menuliskan langkah-langkah untuk menemukan
pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan
bulat, m dan n [KNU73] (tentu saja Eulid tidak menyebut metodenya itu sebagai algoritma,
baru di abad modernlah orang-orang menyebut metodenya itu sebagai "algoritma
Euclidean"). Pembagi bersama terbesar dari dua buah bilangan bulat tak negatif adalah
bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut.

Misalnya, m= 80 dan n =12. Semua faktor pembagi 80 adalah

1,2,4,5,8,10,16,20,40,80

dan semua faktor pembagi 12 adalah

1,2,3,4,6,12,

maka gcd(80,12) = 4.

Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sebagai berikut:

80 dibagi 12 hasilnya =6, sisa 8 (atau:80 =6.12+8)

12 dibagi 8 hasilnya = 1, sisa = 4 (atau:12 =1.8+4)

8 dibagi 4 hasilnya = 2, sisa =0 (atau:8 =4.2+0)

karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0,
yaitu

4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) = gcd(8,4) = gcd(4,0)=4.

2.Tujuan penulisan
- Untuk mengetahui pengertian dari algoritma sorting dan algoritma searching
-Untuk mengetahui macam-macam algoritma sorting dan algoritma searching srta
implementasinya dalam coding
BAB II
PEMBAHASAN

A. Algoritma Sorting
Algoritma Sorting atau Algoritma pengurutan adalah metode yang di butuhkan untuk
mengurutkan data. Data yang di urutkan dapat berupa tipe dasar atau berstruktur (struct).
Jika data bertipe struktur, maka harus dispesifikasikan berdasarkan field apa data tersebut
di urutkan. Terdapat banyak algoritma untuk mengurutkan data dan berikut adalah
algoritma-algoritma pengurutan beserta implementasi codingnya.

1. Buble sort

Buble sort adalah metode pengurutan yang melakukan penukaran data secara
berulang atau membandingkan elemen yang sekarang dengan elemen berikutnya agar
dapat di pastikan dalam suatu literasi tertentu tidak ada lagi perubahan atau penukaran.

Berikut adalah implementasi Buble sort pada Bahasa php :

<?php
function bubble_Sort($my_array ) {
do{
$swapped = false;
for( $i = 0, $c = count( $my_array ) - 1; $i < $c; $i++ ) {
if( $my_array[$i] > $my_array[$i + 1] ){
list( $my_array[$i + 1], $my_array[$i] ) = array( $my_array[$i], $my_array[$i + 1] );
$swapped = true;
}
}
}while( $swapped );
return $my_array;
}
$test_array = array(3, 1, 2, 6);
echo "array sebelum diurutkan :";
echo implode(', ',$test_array );
echo "<br/> array setelah diurutkan: ";
echo implode(', ',bubble_Sort($test_array));

Berikut adalah hasilnya:

2. Selection sort
Selection sort merupakan metode pengurutan dengan mencari nilai data terkecil
dimulai dari data diposisi 0 hingga diposisi N-1. Algoritma selection sort akan memindai nilai
terkecil dari suatu kumpulan data dan jika ada, data tersebut akan diletakkan pada urutan
pertama. Begitu selanjutnya untuk urutan kedua dan seterusnya.

Dikatakan selection sort karena algoritma ini mencoba memilih satu per satu elemen data
dari posisi awal, untuk mencari data paling kecil dengan mencatat posisi index-nya saja, lalu
dilakukan pertukaran hanya sekali pada akhir setiap tahapan.

Berikut adalah implementasi Selection sort pada Bahasa php :


<?php

function selection_sort($data){
for($i=0; $i<count($data)-1; $i++) {
$min = $i;
for($j=$i+1; $j<count($data); $j++) {
if ($data[$j]<$data[$min]) {
$min = $j;
}
}
$data = swap_positions($data, $i, $min);
}
return $data;
}

function swap_positions($data1, $left, $right) {


$backup_old_data_right_value = $data1[$right];
$data1[$right] = $data1[$left];
$data1[$left] = $backup_old_data_right_value;
return $data1;
}

$my_array = array(5, 1, 12, -5, 16, 2, 12, 14);


echo "array awal :<br/>";
echo implode(', ',$my_array );
echo "<br/>setelah dilakukan sorting :<br/>";
echo implode(', ',selection_sort($my_array));

Berikut adalah hasilnya:


3. Insertion sort
nsertion Sort merupakan sebuah teknik pengurutan dengan cara membandingkan
dan mengurutkan dua data pertama pada array, kemudian membandingkan data para array
berikutnya apakah sudah berada di tempat semestinya. Algorithma insertion sort seperti
proses pengurutan kartu yang berada di tangan kita. Algorithma ini dapat mengurutkan data
dari besar ke kecil (Ascending) dan kecil ke besar (Descending). Algoritma ini tidak cocok
untuk set data dengan jumlah besar karena kompleksitas dari algorithma ini adalah Ο() di
mana n adalah jumlah item.

Berikut adalah implementasi Insertion sort pada Bahasa php :

<?php

function insertion_Sort($my_array)
{
for($i=0;$i<count($my_array);$i++){
$val = $my_array[$i];
$j = $i-1;
while($j>=0 && $my_array[$j] > $val){
$my_array[$j+1] = $my_array[$j];
$j--;
}
$my_array[$j+1] = $val;
}
return $my_array;
}
$test_array = array(3, 0, 2, 5, -1, 4, 1);
echo "Original Array :\n";
echo implode(', ',$test_array );
echo "\nSorted Array :\n";
print_r(insertion_Sort($test_array));
?>

Berikut adalah hasilnya:


4.Shell sort

Shell Sort adalah salahsatu algoritma dalam melakukan sorting, atau pengurutan data
Angka. Tekniknya, dengan melakukan perbandingan angka pada 2 posisi dengan jarak
tertentu, jarak disini diartikan jarak posisi antara 2 bilangan yang ingin dibandingkan. Pada
algoritma pengurutan shell jarak antara dua elemen yang di bandingkan dan ditukarkan.

Berikut adalah implementasi Shell sort pada Bahasa php :


<html>
<head><title>$ Sorting Algorithm $</title></head>
<body>
<h2>Algoritma Shell Sort</h2>
<font size=4>
<?php
$size=6;
//data awal
$data = array(0,1,2,3,4,5);
$data[0]=5; $data[3]=7;
$data[1]=2; $data[4]=6;
$data[2]=4; $data[5]=3;
echo(“<b> Jumlah Data : 6</b><br>”);
echo(“<b> Data Awal :</b>”);
tampildata();echo”<br>”;
$increment=$size/2;
while($increment>0)
{
echo”<b>Increment Ke-$increment :</b><br>”;
for($i=$increment;$i<$size;$i++)
{
$j = $i;
$temp = $data[$i];
while(($j>=$increment)&&($data[$j-$increment]>$temp))
{
$data[$j]=$data[$j-$increment];
$j=$j-$increment;
}
$data[$j]=$temp;
echo”<font color=’green’>”;tampildata();echo”</font><br>”;
}
if ($increment == 2)
$increment = 1;
else
$increment = round($increment/2.2);
}
echo”<font color=’navy’><b>Hasil Akhir : “;
tampildata();echo”<b></font><br>”;
function tampildata()
{
global $data;
for($i=0;$i<=5;$i++)
{
echo”$data[$i] “;
}
}
//=======================
?>
</font>
</body>
</html>

Berikut adalah hasilnya:

5.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.

Berikut adalah implementasi Merge sort pada Bahasa php :

<?php
echo "//shell sortn";
$data=array(6,5,3,1,8,7,2,4);
function shell_sort($data){
$n=count($data);
$k=0;
$gap[0]=(int) ($n / 2);
while($gap[$k]>1){
$k++;
$gap[$k]=(int)($gap[$k-1]/2);
}
for($i=0;$i<=$k;$i++){
$step=$gap[$i];
for($j=$step;$j<$n;$j++){
$temp=$data[$j];
$p=$j-$step;
while($p>=0 && $temp<$data[$p]){
$data[$p+$step]=$data[$p];
$p=$p-$step;
}
$data[$p+$step]=$temp;
}
}
return $data;
}
print_r(shell_sort($data));
?>
Berikut adalah hasilnya:

6.Quick sort
Quick Sort merupakan suatu algoritma pengurutan data yang menggunakan teknik
pemecahan data menjadi partisi-partisi, sehingga metode ini disebut juga dengan nama
partition exchange sort. Untuk memulai irterasi pengurutan, pertama-tama sebuah elemen
dipilih dari data, kemudian elemen-elemen data akan diurutkan diatur sedemikian rupa.

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.

Berikut adalah implementasi Quick sort pada Bahasa php :

<?php
function quick_sort($my_array)
{
$loe = $gt = array();
if(count($my_array) < 2)
{
return $my_array;
}
$pivot_key = key($my_array);
$pivot = array_shift($my_array);
foreach($my_array as $val)
{
if($val <= $pivot)
{
$loe[] = $val;
}elseif ($val > $pivot)
{
$gt[] = $val;
}
}
return array_merge(quick_sort($loe),array($pivot_key=>$pivot),quick_sort($gt));
}

$my_array = array(3, 0, 2, 5, -1, 4, 1);


echo 'Original Array : '.implode(',',$my_array).'\n';
$my_array = quick_sort($my_array);
echo 'Sorted Array : '.implode(',',$my_array);
?>

Berikut adalah hasilnya:


7. Heap sort
Algoritma pengurutan Heap Sort merupakan salah satu metode pengurutan tercepat
setelah Merge Sort dan Quick Sort dengan kompleksitas O(n log n). Kompleksitas prosedur
Build-Heap adalah O(n), kompleksitas prosedur Heapify adalah O(log n), sehingga
kompleksitas algoritma Heap Sort adalah O(n log n).

Berikut adalah implementasi Heap sort pada Bahasa php :


<?php
function heapsort(&$Array, $n) {
for($i = (int)($n/2); $i >= 0; $i--) {
heapify($Array, $n-1, $i);
}

for($i = $n - 1; $i >= 0; $i--) {


//swap last element of the max-heap with the first element
$temp = $Array[$i];
$Array[$i] = $Array[0];
$Array[0] = $temp;

heapify($Array, $i-1, 0);


}
}
function heapify(&$Array, $n, $i) {
$max = $i;
$left = 2*$i + 1;
$right = 2*$i + 2;

if($left <= $n && $Array[$left] > $Array[$max]) {


$max = $left;
}

if($right <= $n && $Array[$right] > $Array[$max]) {


$max = $right;
}

if($max != $i) {
$temp = $Array[$i];
$Array[$i] = $Array[$max];
$Array[$max] = $temp;
heapify($Array, $n, $max);
}
}

function PrintArray($Array, $n) {


for ($i = 0; $i < $n; $i++)
echo $Array[$i]." ";
echo "\n";
}

$MyArray = array(10, 1, 23, 50, 7, -4);


$n = sizeof($MyArray);
echo "Original Array\n";
PrintArray($MyArray, $n);

heapsort($MyArray, $n);
echo "\nSorted Array\n";
PrintArray($MyArray, $n);
?>
Berikut adalah hasilnya:

B. ALGORITMA SEARCHING
Algoritma Pencarian atau Searching adalah metode untuk menemukan nilai (data)
tertentu dalam sekumpulan data yang bertipe sama. Contohnya untuk mengubah
(mengupdet) data tertentu, langkah pertama yang harus di lakukan adalah mencari
keberadaan data tersebut du dalam kumpulannya. Jika data yang di cari di temukan, maka
data tersebut dapat di ubah nilainya dengan data yang baru. berikut adalah algoritma-
algoritma pengurutan beserta implementasi codingnya.

1. Sequential search
Adalah algoritma pencarian beruntun yang membandingkan setiap elemen larik satu
persatu secara beruntun, mulai dari elemen pertama, sampai elemen yang di cari di
temukan, atau seluruh elemen larik sudah di periksa.

Berikut adalah implementasi Sequential search pada Bahasa c++ :

#include <iostream>
#include <stdio.h>
#include <iomanip>

using namespace std;

int main()
{
int a[11] = {12, 17, 10, 5, 15, 25, 11, 7, 25, 16, 19};
int i, n, flag;

cout << " ===== Contoh Sequential Search =====" << endl << endl;
cout << " Masukkan Bilangan Integer : ";
cin >> n;
cout << endl;

for (i=0; i<11; i++){


cout << setw (5) << a[i];
}
cout << endl;

i = 0;
flag = 0;
while (i<=10){
if (a[i] == n){
flag++;
}
i++;
}
if (flag > 0){
cout << "\n Bilangan Ditemukan ";
cout << "\n Terdapat " << flag << " Bilangan yang Sama";
} else {
cout << "\n Bilangan Tidak Ditemukan ";
}

return 0;
}

Berikut adalah hasilnya:


2. Binari search
Binary Search adalah salah satu algoritma pencarian yang memiliki cara kerja yang
berbeda dari algoritma yang sebelumnya kita bahas yaitu Sequential. Pada sequential, data
dicari dengan dicek satu persatu mulai dari elemen pertama hingga akhir, sedangkan pada
pencarian biner ini data dicari dengan membagi array menjadi 2 bagian. Bagi yang masih
belum tahu apa itu algoritma pencarian, jadi algoritma pencarian ini adalah tahapan
sistematis yang digunakan pada program untuk menelusuri suatu data yang dicari.

Berikut adalah implementasi Binari sear pada Bahasa c++

#include <iostream>
using namespace std;
int binary_search(int a[], int l, int r, int key) {
while (l <= r) {
int m = l + (r - l) / 2;
if (key == a[m])
return m;
else if (key < a[m])
r = m - 1;
else
l = m + 1;
}
return -1;
}

int *bubble_sort(int a[],int n){


int param;
int y = n-2;
while(y >= 0){
int index = 0;
while(index <= y){
if(a[index] > a[index+1]){
param = a[index];
a[index] = a[index+1];
a[index+1] = param;
}
index++;
}
y--;
}
return a;
}
int main(int argc, char const* argv[]) {
int n, key;
cout << "Masukan banyak array: ";
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++) {
cout<<endl<<"Masukan value array ke "<<i<<" :";
cin >> a[i];
}
cout <<endl<< "Masukan angka yang ingin dicari : ";
cin >> key;

a = bubble_sort(a,n);
int res = binary_search(a, 0, n - 1, key);
if (res != -1)
std::cout << key << "ditemukan " << endl;
else
std::cout << key << "tidak ditemukan" << endl;
return 0;
}
BAB III
PENUTUP

Demikian yang dapat kami paparkan mengenai algoritma sorting dan algoritma
searching. Semoga semuah hal yang telah di tulis dapat di pahami dan mohon maaf apabila
masih banyak terdapat kekurangan. Jika ada kelebihannya itu datangnya dari Tuhan yang
maha Esa. Jika ada salah atau ketidak sesuaian penulis laporan ini berasal dari diri penulis.
Terima Kasih

Palangka Raya,23 Mei 2022

You might also like