Algoritma Pengurutan (Sorting) dan Pencarian (Searching)

Sorting and searchingPengurutan (sorting)
Pada kasus data dengan jumlah menengah atau bahkan besar pengurutan sangat diperlukan supaya lebih mudah dalam pengelolaannya.

Contoh kasus :
Anda diminta untuk mencari nama "Issac Newton" dari 600 nama mahasiswa jurusan teknik informatika universitas X. Terdapat 2 daftar mahasiswa, daftar yang pertama sudah berurutan sesuai abjad sedangkan daftar kedua masih acak berdasarkan tanggal mahasiswa mendaftar. Maka daftar manakah yang lebih mudah digunakan??

dari kasus diatas tentu daftar mahasiswa yang sudah terurut secara abjad akan lebih mudah digunakan.

Dalam dunia pemrograman untuk mengurutkan data diperlukan algoritma/ urutan langkah yang jelas supaya data yang diolah benar benar bisa berurutan dengan benar. Terdapat beberapa metode pengurutan yang akan dibahas pada artikel ini antara lain :

- Bubble Sort
Bubble sort akan membandingkan elemen yang sedang dibaca dengan elemen berikutnya dan akan menukarkan elemen jika ternyata elemen yang sedang dibaca bernilai lebih besar dari elemen berikutnya.

Bubble Sort
Sumber : www.quora.com/What-is-the-total-number-of-comparisons-in-a-bubble-sort

PHP
<?php
function sortingBubble($AData,$ATerakhir){
/*perulangan sejumlah index data*/
for($i=0;$i<$ATerakhir;$i++){
for($j=0;$j<$ATerakhir-$i;$j++){
if ($AData[$j]>$AData[$j+1]) {
$FTemp = $AData[$j];
$AData[$j] = $AData[$j+1];
$AData[$j+1]= $FTemp;
}
}
}
return $AData;
}

echo "Algoritma Bubble Sort <br/><br/>";
$data = [12,1,5,3,56,58,4,85,62,25,26,27,48,51,23,64,48,75,52,58,
53,21,54,57,69,45,48,51,5,6,9,2,58,74,15,25,13,24,18,35];

echo "Data sebelum diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$data = sortingBubble($data,count($data)-1);

echo "<br>Data setelah diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}
?>

- Insertion Sort
Insertion sort akan membandingkan data ke-i (semua data dimulai dari data ke 2 hingga data terakhir) dengan data berikutnya. Data akan disisipkan ke depan jika menemukan data yang lebih kecil.  Dalam penerapannya metode ini dinilai kurang efisien dibandingkan dengan algoritma sorting yang lain.

insertion-sort
Insertion Sort
Sumber : https://www.geeksforgeeks.org/recursive-insertion-sort/

PHP
<?php
function InsertionSort($AData){
//menemukan index terakhir
$LastIndex = count($AData)-1;

//mengulang sejumlah array
for($i=1; $i<=$LastIndex; $i++) {

//memasukkan elemen kedua ke elemen
$element = $AData[$i];

for($j=$i-1; $j>=0; $j--)
        {
            if( $element < $AData[$j] )
            {
                $AData[$j+1]=$AData[$j];
            }
            else
            {
                break;
            }
        }
        $AData[$j+1]=$element;

}
return $AData;

}

echo "Algoritma Insertion Sort <br/><br/>";
$data = [12,1,5,3,56,58,4,85,62,25,26,27,48,51,23,64,48,75,52,58,
53,21,54,57,69,45,48,51,5,6,9,2,58,74,15,25,13,24,18,35];

echo "Data sebelum diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$data = InsertionSort($data);

echo "<br>Data setelah diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

?>


- Selection Sort
Metode ini membandingkan data yang sedang dibaca dengan data berikutnya sampai data terakhir. jika menemukan elemen yang nilainya lebih kecil maka akan ditukar posisinya.

Selection Sort
Selection Sort
Sumber : https://www.tutorialspoint.com/data_structures_algorithms/selection_sort_algorithm.htm

PHP
<?php
function SelectionSort($AData){
//mengulang sejumlah array
for($i=0; $i<=count($AData)-1; $i++) {

//membandingkan dengan semua elemen
for ($j=$i+1; $j<=count($AData)-1; $j++) {

//jika elemen array dibaca lebih kecil dari data sebelumnya
if ($AData[$j]<$AData[$i]) {
$Temp = $AData[$i];
$AData[$i] = $AData[$j];
$AData[$j] = $Temp;
}

}
}
return $AData;
}

echo "Algoritma Selection Sort <br/><br/>";
$data = [12,1,5,3,56,58,4,85,62,25,26,27,48,51,23,64,48,75,52,58,
 53,21,54,57,69,45,48,51,5,6,9,2,58,74,15,25,13,24,18,35];

echo "Data sebelum diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$data = SelectionSort($data);

echo "<br>Data setelah diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}
?>

Pencarian (searching)
Dalam kumpulan data yang besar diperlukan metode pencarian untuk menemukan satu data dari kumpulan data.

Contoh kasus :
Jika anda mencari nama dari 600 mahasiswa jurusan teknik informatika. Maka mana yang lebih mudah, melakukan pencarian secara manual dari daftar nama mahasiswa atau menggunakan fasilitas pencarian yang sudah di komputerisasi??

Tentu akan lebih mudah menggunakan fasilitas pencarian yang ada. selain lebih mudah tentunya juga lebih cepat ditemukan.

Dalam dunia pemrograman terdapat banyak sekali metode pencarian data diantaranya :

- Linear Search
Pencarian ini akan membandingkan data kunci dengan seluruh data yang ada (mulai data pertama sampai terakhir)

How to implement Linear Search in Java? Example tutorial
Linear Search
Sumber : http://www.java67.com/2016/10/how-to-implement-linear-search-in-java.html

PHP
<?php
function LinearSearch($AData, $keyword){
//mengulang sejumlah array
for($i=0; $i<=count($AData)-1; $i++) {

//membandingkan dengan semua elemen
if ($keyword == $AData[$i]) {
return $i;
}

}
return null;
}

echo "Algoritma Linear Search <br/><br/>";
$data = [12,1,5,3,56,58,4,85,62,25,26,27,48,51,23,64,48,75,52,58,
53,21,54,57,69,45,48,51,5,6,9,2,58,74,15,25,13,24,18,35];

echo "Data Array <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$keyword = 512;
$hasil = LinearSearch($data, $keyword);

if ($hasil == null) {

echo "<br><br> Data ".$keyword." tidak ditemukan di array <br><br>";

} else {

echo "<br><br> Data ".$keyword." ditemukan di array index ke ".$hasil." <br><br>";

}
?>

- Binary Search
Pencarian ini akan membandingkan data kunci dengan data tengah (dengan syarat data sudah terurut). jika data kunci lebih besar dari data tengah maka akan melanjutkan pencarian di sebelah kiri dari data tengah, begitu sebaliknya. Proses membagi menjadi 2 akan dilanjutkan sampai data habis atau data ditemukan.
binary-search1
Binary Search
Sumber : https://www.geeksforgeeks.org/binary-search/

PHP
<?php
function SelectionSort($AData){
//mengulang sejumlah array
for($i=0; $i<=count($AData)-1; $i++) {

//membandingkan dengan semua elemen
for ($j=$i+1; $j<=count($AData)-1; $j++) {

//jika elemen array dibaca lebih kecil dari data sebelumnya
if ($AData[$j]<$AData[$i]) {
$Temp = $AData[$i];
$AData[$i] = $AData[$j];
$AData[$j] = $Temp;
}

}
}
return $AData;
}

function BinarySearch($AData, $keyword){
//nilai awal dan nilai akhir
$indexawal = 0;
$indexakhir = count($AData)-1;
$ditemukan = false;

while (($ditemukan==false) and ($indexawal <= $indexakhir-1)) {
//mendefinisikan nilai tengah
$indextengah = round(($indexawal+$indexakhir)/2);

echo $indextengah;

if ($keyword < $AData[$indextengah]) {
$indexakhir = $indextengah;
} else if ($keyword > $AData[$indextengah]) {
$indexawal = $indextengah;
} else {
$ditemukan = true;
return $indextengah;
}
}
return null;
}

echo "Algoritma Binary Search <br/><br/>";
$data = [12,1,5,3,56,58,4,85,62,25,26,27,48,51,23,64,48,75,52,58,
53,21,54,57,69,45,48,51,5,6,9,2,58,74,15,25,13,24,18,35];

echo "Data Array Sebelum Diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$data = SelectionSort($data);

echo "<br>Data setelah diurutkan <br/>";
for($n=0;$n<=count($data)-1;$n++){
echo $data[$n]." ";
}

$keyword = 5;
$hasil = BinarySearch($data, $keyword);

if ($hasil == null) {
  echo "<br><br> Data ".$keyword." tidak ditemukan di array <br><br>";
} else {
echo "<br><br> Data ".$keyword." ditemukan di array index ke ".$hasil." <br><br>";
}
?>


Sumber :
- Modul Praktikum Srtuktur Data STMIK Akakom Yogyakarta
Previous
Next Post »

1 komentar:

Write komentar
SanIkhsan
AUTHOR
9 Juli 2021 pukul 16.12 delete

terima kasih gan, sangat membantu.

Reply
avatar