Beberapa macam mode search dan pengurutan dalam C++

0 komentar

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

Berikut ini code binary search dengan bahasa C++

#include
#include
#include

void binSearch(int cari);

void main(){

clrscr();

int searchValue=20; /*Nilai yang dicari dalam arry yang sudah terurut */

binSearch(searchValue);

getch();

}

void binSearch(int cari)

{ int lb=1, ub=19, mid; /* lb merupakan batas bawah, up merupakan batas atas */

int nilai [20] ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

int jumlahPerbandingan =1; /* Optional */

mid= (lb+ub)/2;

while( nilai[mid]!= cari && lb<=ub)

{

jumlahPerbandingan++;

if( nilai [mid] > cari )

{ub = mid-1;}

else

{lb = mid +1;}

mid = (lb+ub)/2;

}

if(lb<=ub)

{

cout << “Nilai berhasil ditemukan”;

cout<<”Jumlah perbandingan :”<
}
else
cout <<”Nilai tidak ditemukan”;
}

Catatan :

Array bersifat statis baik nilai maupun jumlah element telah ditentukan sejak awal program.


2. Sequence search


pencarian sekuensial atau pencarian linear merupakan model pencarian yang paling sederhana yang dilakukan terhadap suatu kumpulan data. Secara konsep, penjelasannya adalah sebagai berikut: Terdapat L yang merupakan larik yang berisi n buah data (L[0], L[1],…, L[n-1]) dan k adalah data yang hendak dicari. Pencarian dilakukan untuk menemukan

L[i] = k

dengan I adalah bilangan indeks terkecil yang memenuhi kondisi 0 ≤ k ≤ n-1. Tentu saja ada kemungkinan bahwa data yang dicari tidak ditemukan. Contoh,

L = [10,9,4,6,4,2,5]

dimanakah posisi 4 yang pertama? Dalam hal ini k adalah 4 dan k ditemukan pada posisi dengan indeks berupa 2.

Dan setelah browsing, saya menemukan penjelasan yang lebih mudah dimengerti dan dipahami ^-^

The sequential search is best used if the array you are searching is unsorted. This method of searching is usually used on small arrays of less than 16 elements. We start the sequential search by first declaring a target to be found. The search initiates at the beginning of the array until it finds the target.

In the following example we will find a target value of 23 within a one dimensional array. At index 0, 32 is not equal to 23 so we proceed on to the next element.

a[0]

a[1]

a[2]

a[3]

a[4]

32

431

-34

23

12

At index 1, 431 is not equal to 23 so we proceed.

a[0]

a[1]

a[2]

a[3]

a[4]

32

431

-34

23

12

At index 2, -34 is not equal to 23 so we proceed.

a[0]

a[1]

a[2]

a[3]

a[4]

32

431

-34

23

12

Finally at index 3, 23 is equal to 23 and we have found our target.

a[0]

a[1]

a[2]

a[3]

a[4]

32

431

-34

23

12

Now we will implement this example of a sequential search into C++ code. The program below asks the user for a target to be found, then uses a for loop to analyze each element of the array. If the array element is equal to the target it will display that the target was found. Whenever a target is found the variable “flag” will be incremented by 1. At the end of the program if the variable “flag” is less than one, thenthe target was obviously not found.

Contoh codenya …

#include iostream.h
#include conio.h
using namespace std;

int main()
{
const int arraySize = 5;
double target;
int array[arraySize] = {32, 431, -34, 23, 12};
int flag;

// flag is used to log how many times the target is encountered.

flag = 0;

cout << "Enter a target to be found: ";
cin >> target;

for(int cntr = 0; cntr < arraySize; cntr++)
{
if(array[cntr] == target)
{
cout << "Target found in array index " << cntr << "."
<< endl;

flag += 1;
}
}

// Test to see if target was found.

if(flag < 1)
{
cout << "Target not found." << endl;
}

return 0;
getch();
}

Namespace digunakan untuk menghindari name collision -> tubrukan nama yang sama.
Std sendiri adalah namespace yang digunakan untuk standard template library di C++. Jadi semua fungsi & template class STL didefinisikan didalam namespace "std".

Mengakses fungsi / struktur / class yang didefinisikan dalam suatu namespace dapat dilakukan dengan dua cara. Ini contoh akses namespace std untuk deklarasi variabel MyString yang merupakan type string.

Back to topic, dari code di atas, pertama dibuat dulu array berdimensi satu yang berisi 5 buah data, lalu dimasukkan data yang ingin dicari. Dideklarasikan "cntr=0",dilakukan pengulangan selama cntr kurang dari target, ketika sudah ditemukan cntr=target, maka ditampilkan bahwa data telah ditemukan pada indexarray[cntr], misal data yang dicari adalah 431, maka "Target found in array index 2"

The sequential search does have a pitfall. It is very slow and its performance rating is low. If a person had an array of one million elements, that would mean there could be up to one million comparisons, and that takes time! The sequential search method would be advisable to use only if the array you were searching was unsorted and small.

Terdapat 2 bersi algoritma pencarian beruntun, yaitu:

1. Pembandingan Elemen Dilakukan di Awal Pengulangan

2. Aksi Pembandingan dilakukan di dalam badan pengulangan (dengan

fungsi). Secara umum metode pencarian beruntun berjalan lambat. Waktu pencarian sebanding dengan jumlah elemen larik. Misalkan larik berukuran n elemen, maka pada kasus di mana x tidak terdapat di dalam larik atau x ditemukan pada elemen yang terakhir. Kita harus melakukan perbandingan dengan seluruh elemen larik, yang berarti jumlah perbandingan yang terjadi sebanyak n kali.

Metode Pencarian Beruntun Pada Larik Terurut

Larik yang elemennya sudah terurut dapat meningkatkan kinerja algoritma pencarian beruntun. Jika pada larik tidak terurut jumlah perbandingan elemen larik maksimum n kali, maka pada larik terurut (dengan asumsi distribusi elemen- elemen larik adalah seragam) hanya dibutuhkan rata-rata n/2 kali perbandingan. Hal ini karena pada larik yang terurut kita dapat segera menyimpulkan bahwa x tidak terdapat di dalam larik bila ditemukan, elemen larik yang lebih besar dari x.

Secara singkat, kita akan melakukan proses yang serupa dengan pencarian berurutan. Kita mulai dengan pembandingan dengan elemen yang pertama. Jika kita menganggap larik terurut naik (ascending), maka pencarian akan diteruskan sepanjang data yang dicari masih lebih kecil dari nilai elemen pada larik. Jika elemen larik sudah lebih besar, maka pencarian dihentikan karena pasti data yang dicari tidak akan pernah ditemukan pada larik.

Penelitian para ahli menunjukkan bahwa metode ini berjalan dengan sangat efektif dan efisien dibandingkan pencarian berurutan yang tidak terurut, jikaq data yang dicari berada (relatif) pada bagian awal larik. Tetapi, karena kondisi berhenti yang kita tentukan, metode ini kurang lebih berkinerja sama dengan pencarian berurutan jika data yang dicari terletak di bagian akhir larik.


Pengurutan

Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending) atau menurun (descending). Bila N buah objek atau data disimpan di dalam larik L, maka pengurutan menaik berarti menyusun elemen larik sedemikian sehingga:

L[1]≤≤≤ …≤ L[2] L[3 L[N]

Sedangkan pengurutan menurun berarti menyusun elemen larik sedemikian

sehingga:

L[1]≥≥≥ …≥ L[2] L[3 L[N]

Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Jika data bertipe terstruktur, maka harus dispesifikasikan berdasarkan field apa data tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai field kunci.

Adanya kebutuhan terhadap proses pengurutan memunculkan bermacam- macam metode pengurutan. Metode tersebut diantaranya adalah: 1) Metode Pengurutan Gelembung (Bubble Sort), 2) Metode Pengurutan Pilih (Selection

Sort), 3) Metode Pengurutan Sisip (Insertion Sort), 4) Metode Pengurutan Shell

(Shell Sort), 5) Heap Sort, 6) Quick Sort, 7) Merge Sort, 8) Radix Sort dan 9)

Tree Sort. Pada modul ini, tidak semua metode pengurutan akan dibahas.

Tidak ada metode yang terbaik untuk pengurutan. Kebanyakan metode pengurutan sederhana hanya bagus untuk volume data yang kecil tetapi lambat untuk ukuran data yang besar. Metode pengurutan yang lebih cepat pun (seperti

quick sort dan merge sort) memang bagus untuk mengurutkan data yang banyak, tetapi tidak bagus untuk ukuran data yang sedikit karena memerlukan beban tambahan (overhead) yang boros waktu dan memori.

Metode pengurutan dapat diklasifikasikan sebagai berikut:

a.Metode pengurutan internal, yaitu metode pengurutan untuk data yang disimpan di dalam memori computer. Umumnya struktur internal yang dipakai untuk pengurutan internal adalah larik, sehingga pengurutan internal disebut juga pengurutan larik.

b.Metode pengurutan eksternal, yaitu metode pengurutan untuk data yang disimpan di dalam disk storage, disebut juga pengurutan arsip (file), karena struktur eksternal yang dipakai adalah arsip.

ASTABRATA

0 komentar

Asta Brata merupakan 8 sifat inti seorang pemimpin dalam tradisi Jawa. Sikap yang harus dimiliki oleh penguasa jika ingin rakyat yang dipimpinnya menjadi tentram dan sejahtera. Asta Brata yang dalam terjemahan bebas; delapan ajaran utama tentang kepemimpinan, merupakan petunjuk Sri Rama kepada adiknya yang akan dinobatkan sebagai raja Ayodya. Secara simbol, Asta Brata merupakan sifat-sifat mulia yang di ambil dari alam semesta dan patut untuk dijadikan pedoman bagi seluruh pemimpin negeri ini.

Asta Brata merupakan kebijaksanaan turun-temurun yang diselipkan dalam artefak-artefak Jawa, salah satunya melalui kesenian Wayang atau Ketoprak. Banyak makna yang mengacu pada jalan pencerahan yang akan menuntun siapapun, khususnya para pemimpin jika berhasil memahami esensi falsafah Asta Brata ini. Kebijaksanaan dan keselamatan merupakan inti pemahaman yang akan didapatkan seorang pemimpin jika mempelajari dan mempraktekkannya.

Delapan sifat pemimpin menurut falsafah Asta Brata antara lain:

1. Laku Hambeging indra

Seorang yang dipercaya menjadi pemimpin, hendaknya mengusahakan kemakmuran bagi rakyatnya dan dalam segala tindakannya dapat membawa kesejukan dan kewibawaan yang seperti bintang. Maknanya, seorang pemimpin haruslah kuat, tidak mudah goyah, berusaha menggunakan kemampuan untuk kebaikan rakyat, tidak mengumbar hawa nafsu, kuat hati dan tidak suka berpura-pura. Seorang pemimpin haruslah adil seperti air, yang jika di seduh di gelas akan rata mengikuti wadahnya. Keadilan yang ditegakkan bisa memberi kecerahan ibarat air yang membersihkan kotoran. Air juga tidak pernah emban oyot emban cindhe “pilih kasih” karena air akan selalu turun ke bawah, tidak naik ke atas.

2. Laku Hambeging Yama

Pemimpin hendaknya meneladani sikap dan sifat Dewa Yama, dimana Dewa Yama selalu menegakkan keadilan menurut hukum atau peraturan yang berlaku demi mengayomi rakyatnya. Harus menindak tegas abdinya, jika mengetahui abdinya itu memakan uang rakyat dan mengkhianati negaranya. Dewa Yama memiliki sifat seperti mendung (awan), mengumpulkan segala yang tidak berguna menjadi lebih berguna. Adil tidak pilih kasih. Bisa memberikan ganjaran yang berupa hujan dan keteduhan. Jika ada yang salah maka akan dihukum dengan petir dan halilintar.

3. Laku Hambeging Surya

Seorang pemimpin yang baik haruslah memiliki sifat dan sikap seperti matahari (surya) yang mampu memberi semangat dan kekuatan yang penuh dinamika serta menjadi sumber energi bagi bumi pertiwi. Sifat matahari berarti sabar dalam bekerja, tajam, terarah dan tanpa pamrih. Semua yang dijemur pasti kena sinarnya, tapi tidak dengan serta merta langsung dikeringkan. Jalannya terarah dan luwes. Tujuannya agar setiap manusia sabar dan tidak sulit dalam mengupayakan rejeki. Menjadi matahari juga berarti menjadi inspirasi pada bawahannya, ibarat matahari yang selalu menyinari semesta.

4. Laku Hambeging Candra

Pemimpin hendaknya memiliki sifat dan sikap yang mampu memberikan penerangan bagi rakyatnya yang berada dalam kebodohan dengan wajah yang penuh kesejukan seperti rembulan (candra), penuh simpati, sehingga rakyat menjadi tentram dan hidup dengan nyaman. Rembulan juga bersifat halus budi, terang perangai, menebarkan keindahan kepada seisi alam. Seorang pemimpin harus berlaku demikian, menjadi penerang bagi rakyatnya.

5. Laku Hambeging Maruta

Maruta adalah angin. Pemimpin harus menjadi seperti angin. Senantiasa memberikan kesegaran dan selalu turun ke bawah melihat rakyatnya. Angin tidak berhenti memeriksa dan meneliti, selalu melihat perilaku manusia, bisa menjelma besar atau kecil, berguna jika digunakan. Jalannya tidak kelihatan, nafsunya tidak ditonjolkan. Jika ditolak ia tidak marah dan jika ditarik ia tidak dibenci. Seorang pemimpin harus berjiwa teliti di mana saja berada. Baik buruk rakyat harus diketahui oleh mata kepala sendiri, tanpa menggantungkan laporan bawahannya. Biasanya, bawahan bagitu pelit dan selektif dalam memberikan laporan kepada pemimpin, dan terkadang hanya kondisi baik-baiknya saja yang dilaporkan.

6. Laku Hambeging Bumi

Pemimpin hendaknya memiliki sifat-sifat utama dari bumi, yaitu teguh, menjadi landasan pijak dan memberi kehidupan (kesejahteraan) untuk rakyatnya. Bumi selalu dicangkul dan digali, namun bumi tetap ikhlas dan rela. Begitu pula dengan seorang pemimpin yang rela berkorban kepentingan pribadinya untuk kepentingan rakyat. Seorang pemimpin haruslah memiliki sikap welas asih seperti sifat-sifat bumi. Falsafah bumi yang lain adalah air tuba dibalas dengan air susu. Keburukan selalu dibalas dengan kebaikan dan keluhuran.

7. Laku Hambeging Baruna

Baruna berarti samudra yang luas. Sebuah samudra memiliki wawasan yang luas, mampu mengatasi setiap gejolak dengan baik, penuh kearifan dan kebijaksanaan. Samudera merupakan wadah air yang memiliki sifat pemaaf, bukan pendendam. Air selalu diciduk dan diambil tapi pulih tanpa ada bekasnya. Seorang pemimpin harus mempunyai sifat pemaaf, sebagaimana sifat air dalam sebuah samudra yang siap menampung apa saja yang hanyut dari daratan. Samudra mencerminkan jiwa yang mendukung pluralisme dalam hidup bermasyarakat yang berkarakter majemuk.

8. Laku hambeging Agni

Pemimpin hendaknya memiliki sifat mulia dari api (agni), yang selalu mendorong rakyatnya memiliki sikap nasionalisme. Seperti api, berarti pemimpin juga harus memiliki prinsip menindak yang bersalah tanpa pilih kasih. Api bisa membakar apa saja, menghanguskan semak-semak, menerangkan yang gelap. Bisa bersabar namun juga bisa sangat marah membela rakyatnya jika dizolimi dan tetap memiliki pertimbangan berdasarkan akal sehat dan bisa dipertanggungjawabkan.

Jika kita melihat para pemimpin Indonesia saat ini, sudahkah sesuai dengan falsafah Asta Brata di atas? Jika belum, hendaknya beliau para para pemimpin negeri ini segera berubah agar segala konflik dan permasalahan negeri ini segera bisa diselesaikan. Karena bagaimanapun juga saat ini rakyat sudah terlalu banyak menderita dan butuh perubahan.


GAMBAR STRUKTUR MANAGEMENT POLITEKNIK TELKOM