Anda di halaman 1dari 13

1.

SORTING

Sorting adalah metode untuk pengurutan data. Secara garis besarnya, Sorting
(Pengurutan) adalah suatu proses penyusunan kembali kumpulan objek menggunakan tata aturan
tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data
ke dalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen.
Pengurutan atau sorting merupakan proses dasar yang ada dalam sebuah algoritma dan struktur
data. Penggunaan algoritma sorting dapat pula diaplikasikan pada algoritma Python. Tujuan
utama dari proses pengurutan atau sorting adalah untuk mengurutkan data berdasarkan keinginan
baik itu dari yang terendah maupun yang tertinggi, sehingga data yang dihasilkan akan lebih
terstruktur, teratur dan sesuai dengan kebutuhan.

Terdapat beberapa algoritma python yang cukup populer dalam mengurutkan data.
Seperti misalnya insertion sort, selection sort, merge sort, heap sort, quick sort, bubble sort, shell
sort, comb sort, counting sort, bucket sort, radix sort. Tentunya pengaplikasian algoritma sorting
pada algoritma python memiliki banyak keuntungannya. Hal yang paling utama dalam
penggunaannya yakni untuk mempersingkat dalam penggunaan waktu dalam pembuatan proses
program, karena jika saja tidak menggunakan sorting, bisa anda bayangkan kembali jika data
yang anda buat lebih dari ratusan hingga ribuan, akankah anda akan mengurutkan data satu
persatu hingga kesekian. Dengan demikian, penggunaan algoritma sorting ini sangat
memudahkan pengguna dan efisien untuk melakukan pengurutan data. Terlebih jika sewaktu-
waktu ada beberapa kesalahan dalam metode penyortingan sangat mudah untuk mengubah
proses pengurutannya karena metode sorting ini hanya menggunakan mungkin saja satu rumus
utama yang digunakan untuk semua data.

1.Bubble Sort

Algoritma bubble sort cukup populer dan sederhana. Proses pada bubble sort dilakukan dengan
pertukaran data di sebelahnya secara terus menerus hingga dalam suatu iterasi tertentu tidak ada
lagi perubahan atau pertukaran. Algoritma bubble sort termasuk ke dalam kategori algoritma
comparison sort, karena menggunakan perbandingan pada operasi antar elemen nya.

Analogi algoritma bubble sort :


 Bandingkan nilai pada data ke satu dengan data ke dua

 Apabila nilai data ke satu lebih besar dari data ke dua maka tukar posisinya

 Kemudian data yang lebih besar tersebut dibandingkan lagi dengan data ketiga

 Apabila data ke tiga lebih kecil dari data ke dua maka tukar posisinya

 Dan begitu seterusnya hingga semua data yang ada menjadi terurut

2.Selection Sort

Algoritma selection sort merupakan pengurutan dengan konsep memilih elemen dengan nilai
paling rendah dan menukar elemen tersebut dengan elemen ke i. Nilai dari i dimulai dari 1 ke n,
yang dimana n merupakan jumlah total elemen dikurangi satu.

Analogi algoritma selection sort :

 Memulai pengecekan data dari data ke 1 hingga data ke n.


 Menentukan bilangan dengan index terkecil dari data pada bilangan tersebut.
 Menukar bilangan index terkecil dengan bilangan pertama.
 Begitu seterusnya hingga data berhasil diurutkan semuanya.

3.Insertion Sort

Algoritma insertion sort merupakan suatu metode pengurutan data dengan melakukan
penempatan setiap elemen data pada posisinya dengan membandingkan dengan data-data yang
telah ada. Prinsip dari insertion sort adalah dengan membagi data yang akan diurutkan menjadi
dua kelompok, satu kelompok yang belum diurutkan dan yang satunya lagi sudah diurutkan,
Elemen yang pertama diambil dari kelompok list yang belum diurutkan dan kemudian
ditempatkan sesuai posisinya pada bagian lain yang belum diurutkan.

Analogi Algoritma insertion sort

 Membandingkan data kedua dengan data kesatu


 Apabila data ke dua lebih kecil maka tukar posisinya
 Data ketiga dibandingkan dengan data kesatu dan kedua
 Apabila data ketiga lebih kecil tukar lagi posisinya
 Data keempat dibandingkan dengan data ketiga hingga kesatu
 Apabila data keempat lebih kecil dari ketiga maka letakkan data keempat ke posisi paling
depan
 Begitu seterusnya hingga tidak ada lagi data yang dapat dipindahkan.

2. SEARCHING

Masalah pencarian berkaitan dengan menemukan nilai yang diberikan, yang disebut kunci
pencarian, dalam set tertentu (atau multiset, yang memungkinkan beberapa elemen memiliki
nilai yang sama). Ada banyak algoritma pencarian untuk dipilih. Mulai dari pencarian sekuensial
langsung hingga pencarian biner yang sangat efisien namun terbatas dan algoritma berdasarkan
representasi set yang mendasarinya dalam bentuk berbeda yang lebih kondusif untuk pencarian.
Algoritma yang terakhir sangat penting untuk aplikasi dunia nyata karena mereka sangat
diperlukan untuk menyimpan dan mengambil informasi dari database besar.

Untuk pencarian juga, tidak ada algoritma tunggal yang paling cocok untuk semua situasi.
Beberapa algoritma bekerja lebih cepat daripada yang lain tetapi membutuhkan lebih banyak
memori; beberapa sangat cepat tetapi hanya berlaku untuk array yang diurutkan; dan seterusnya.
Berbeda dengan algoritma pengurutan, tidak ada masalah stabilitas, tetapi masalah yang berbeda
muncul. Secara khusus, dalam aplikasi di mana data yang mendasarinya dapat sering berubah
relatif terhadap jumlah pencarian, pencarian harus dipertimbangkan dalam hubungannya dengan
dua operasi lain: penambahan dan penghapusan dari kumpulan data suatu item. Dalam situasi
seperti itu, struktur data dan algoritme harus dipilih untuk mencapai keseimbangan di antara
persyaratan setiap operasi. Juga, mengatur kumpulan data yang sangat besar untuk pencarian
yang efisien menimbulkan tantangan khusus dengan implikasi penting untuk aplikasi dunia
nyata.

DEFINISI LAIN

A. Pengertian Searching
     Pencarian (searching) merupakan proses yang sangat penting 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 di
dalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah nilainya
dengan data yang baru.

     Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah kata
kunci dan dengan  langkah-langkah tertentu akan mencari rekaman dengan kata kunci tersebut. 
Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu
data yang dicari ditemukan atau tidak ditemukan.

     Data dapat di simpan secara temporer dalam memori utama atau di simpan secara permanen
di dalam memori sekunder (tape atau disk). Di dalam memori utama, struktur penyimpanan data
yang umum adalah berupa larik atau tabel (array), sedangkan di dalam memori sekunder berupa
arsip (file).

B. Jenis-jenis Searching
Jenis-jenis searching dibagi menjadi dua, yaitu :

1. Sequential search (pencarian beruntun)

a. Tanpa Boolean

 Tanpa sentinel
 Dengan sentinel
b. Dengan boolean

2. Binary Search (pencarian bagidua)

C. Pembahasan Jenis-jenis Searching


1. Sequential search (pencarian beruntun)

     Algoritma sequential search termasuk kedalam algoritma pencarian yang paling sederhana.
Sequential search disebut juga pencarian lurus (linear search). Pada dasarnya, algoritma
pencarian beruntun adalah proses membandingkan setiap elemen larik secara beruntun satu
persatu, mulai dari elemen pertama, sampai elemen yang dicari ditemukan, atau seluruh elemen
sudah diperiksa. Atau singkatnya sequential search ini menemukan data dari awal sampai
ketemu, setelah ketemu pencarian dihentikan. Algoritma sequential search dibagi menjadi
dua bagian, yaitu sequential search tanpa boolean dan dengan boolean. Sebelumnya, pengertian
boolean itu sendiri yaitu sebuah tipe data yang memiliki dua buah nilai, nilai tersebut adalah true
atau false (benar atau salah), dalam beberapa bahasa pemrograman true atau false biasanya
diganti dengan angka 1 untuk true dan angka 0 untuk false, berikut penjelasannya lebih lanjutnya
:

a. Sequential search tanpa boolean

– Sequential search tanpa sentinel

Sentinel yaitu suatu elemen fiktif untuk data yang dicari.

Misalkan ada sebuah data sebagai berikut:

8 2 7 9 20

1 2 3 4 5

Ada sebuah perintah untuk mencari angka 9.


Langkah 1:

8 2 7 9 20

1 2 3 4 5

Dimulai dari kiri, apakah urutan angka ke-1 adalah angka 9? Jika tidak maka lanjut ke array
berikutnya.

Langkah 2:

8 2 7 9 20

1 2 3 4 5

Apakah urutan angka ke-2 adalah angka 9? Jika tidak maka lanjut ke array berikutnya.

Langkah 3:

8 2 7 9 20

1 2 3 4 5

Apakah urutan angka ke-3 adalah angka 9? Jika tidak maka lanjut ke array berkutnya.

Langkah 4:

8 2 7 9 20

1 2 3 4 5

Apakah urutan angka ke-4 adalah angka 9? Jika iya maka array telah ditemukan. Angka 9 telah
ditemukan pada indeks ke-4, maka pencarian dihentikan.
 Sequential search memakai sentinel
Sequential search memakai sentinel adalah sebuah proses pencarian yg memiliki elemen fiktif
pada elemen terakhir data.

Misalkan ada sebuah data sebagai berikut:

8 2 7 9 20 5

1 2 3 4 5 6

Ada sebuah perintah untuk mencari angka 5.

Langkah 1:

Sentinel

sentinel

8 2 7 9 20 5

1 2 3 4 5 6

Tempatkan data yg akan dicari pada sentinel

Langkah 2:

Telusuri array seperti sequential search tanpa sentinel yang ada diatas, jika data yang ditemukan
berada pada sentinel, maka data yang kita cari tidak ditemukan dan jika daya yang kita cari
ditemukan bukan dalam sentinel, maka data yang kita cari ditemukan.
b. Sequential search memakai boolean

      Sequential search memakai boolean adalah sebuah proses pencarian data yang akan
menelusuri semua elemen – elemen pada data tersebut dari awal sampai elemen yg kita cari
ketemu memakai variabel bertipe boolean (true or false).

Misalkan ada sebuah data sebagai berikut:

Langkah :

8 2 7 9 20

1 2 3 4 5

Penelusuran arraynya sama seperti sequential search yang lain, hanya saja pada penelurusan ini
memakai variabel bertipe boolean (true or false).

2. Binary search (pencarian bagidua)

      Pencarian pada data yang terurut menunjukkan kinerja yang lebih baik daripada pencarian
pada data yang belum terurut. hal ini, sudah kita bicarakan pada metode pencarian beruntun
untuk data yang belum terurut. Terdapat algoritma pencarian pada data terurut yang paling
efisien, yaitu algoritma pencarian bagidua atau pencarian biner (binary search). Algoritma ini
digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Sebenernya, dalam kehidupan
sehari-hari kita sering menerapkan pencarian bagi dua, untuk mencari arti kata tertentu didalam
kamus (misalnya kamus bahasa inggris), kita tidak membuka kamus itu dari halaman awal
sampai halaman akhir satu persatu, namun kita mencarinya dengan cara membelah atau
membagi dua buku itu.
Pencarian Biner (Binary Search) dilakukan untuk :

 memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan
data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
 Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang
sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada
kemungkinan data tidak ditemukan).
 Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan
terurut menaik.

Untuk lebih jelasnya, perhatikan contoh berikut. Misalkan kita ingin mencari 17 pada
sekumpulan data berikut :
1.Mula–mula dicari data tengah, dengan rumus (1+ 9) / 2 = 5.
2.Berarti data tengah adalah data ke-5, yaitu 15.
3.Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini.
4.Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama dengan
posisi tengah + 1 atau 6.

1.Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7. Berarti data tengah yang baru
adalah data ke-7, yaitu 23.
2.Data yang dicari, yaitu 17 dibandingkan dengan data tengah ini.
3.Karena 17 < 23, berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama dengan
posisi tengah – 1 atau 6.

1.Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang baru
adalah data ke-6, yaitu 17.
2.Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan
pada indeks ke-6.
3.Bagaimana jika data yang dicari tidak ada, misalnya 16?
4.Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari posisi
akhir.
5.Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.
Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di atas. Prosesnya hampir sama
dengan pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6, proses masih dilanjutkan lagi
dengan posisi awal = 6 dan posisi akhir = 5
Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak
ditemukan.
Secara umum, algoritma pencarian biner dapat dituliskan sebagai berikut :
1.l ← 1.
2.r ← N.
3.ketemu ← false.
4.selama ( l < = r ) dan (not ketemu) kerjakan baris 5 sampai dengan 8.
5.m ← ( l + r ) / 2
6.Jika ( Data [m] = x ) maka ketemu ← true.
7.Jika ( x < Data [m] ) maka r ← m – 1. 8.Jika ( x > Data [m] ) maka l ← m + 1.
9.If (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan.

Berikut ini adalah contoh fungsi untuk mencari data menggunakan pencarian biner:

Function BinarySearch (x: word) : integer;


var
l, r, m : word;
ketemu : boolean;
begin
l : = 1;
r : = N;
ketemu : = false;
while (1 <= r ) and ( not ketemu ) do
begin
m : = (1 + r ) div 2;
if (Data [m] = x ) then
Ketemu := true
else if (x < Data [m] ) then
r:=m–1
else
l : = m + 1;
end;
if ( ketemu ) then
BinarySearch : = m
else
BinarySearch : = -1;
end;

Fungsi di atas akan mengembalikan indeks dari data yang dicari. Apabila data tidak ditemukan,
maka yang yang dikembalikan adalah –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu bila data yang dicari
tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang dilakukan dengan
pencarian biner dapat dicari dengan rumus logaritma, yaitu : C = ²log (N).

3. STRING PROCESSING

Dalam beberapa dekade terakhir, perkembangan pesat aplikasi yang berhubungan dengan data
nonnumerik telah meningkatkan minat para peneliti dan praktisi komputasi dalam algoritma
penanganan string. String adalah urutan karakter dari alfabet. String minat tertentu adalah string
teks, yang terdiri dari huruf, angka, dan karakter khusus; string bit, yang terdiri dari nol dan satu;
dan urutan gen, yang dapat dimodelkan dengan string karakter dari alfabet empat karakter {A, C,
G, T}. Harus ditunjukkan, bagaimanapun, bahwa algoritma pemrosesan string penting untuk
ilmu komputer untuk waktu yang lama dalam hubungannya dengan bahasa komputer dan
masalah kompilasi.

Satu masalah khusus—yaitu mencari kata tertentu dalam sebuah teks—telah menarik perhatian
khusus dari para peneliti. Mereka menyebutnya pencocokan string. Beberapa algoritma yang
mengeksploitasi sifat khusus dari jenis pencarian ini telah ditemukan. Kami memperkenalkan
satu algoritma yang sangat sederhana di Bab 3 dan membahas dua algoritma berdasarkan ide
yang luar biasa oleh R. Boyer dan J. Moore di Bab 7.
DEFINISI LAIN

Algoritma pencarian string atau sering disebut juga pencocokan string adalah algoritma untuk


melakukan pencarian semua kemunculan string pendek  pattern [0..n-1] yang disebut pattern di
string yang lebih panjang teks [0...m-1] yang disebut teks
String processing dapat di gunakan dalam Algoritma brute force dalam pencarian string
Algoritma brute force merupakan algoritma pencocokan string yang ditulis tanpa memikirkan
peningkatan performa. Algoritma ini sangat jarang dipakai dalam praktik, namun berguna dalam
studi pembanding dan studi-studi lainnya.

Pseudocode
Pseudocode algoritma brute force ini:
procedure BruteForceSearch(
        input m, n : integer,
        input P : array[0..n-1] of char,
        input T : array[0..m-1] of char,
        output ketemu : array[0..m-1] of boolean
       )
Deklarasi:
       i, j: integer
Algoritma:
        for (i:=0 to  m-n) do
               j:=0
               while (j < n and T[i+j] = P[j]) do   
                        j:=j+1
               endwhile
               if(j >= n) then
                         ketemu[i]:=true;
               endif
        endfor

Anda mungkin juga menyukai