Welcome To Aloen BloG

Binary Searching

Diposting oleh Unknown | 07.12 | | 0 komentar »

Binary adalah sebuah metode yang diterapkan pada sekumpulan data yang sudah terurut menaik atau menurun). Metode ini lebih cepa di banding pencarian beruntun dan data yang sudah terurut menjadi syarat mutlak untuk menggunakan metode ini.

Konsep Binary Search :
# Konsep dasar metode ini adalah membagi 2 jumlah elemen, yang menentukan apakah data yang berada pada elemen paling tengah bernilai sama, lebih dari atau kurang dari nilai data yang akan dicari.
# Jika bernilai sama, maka langsung data yang dicari ditemukan.dan jika data di elemen terurut naik, maka data yang berada di tengah kurang dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kanan, dan begitu seterusnya sampai ketemu atau tidak sama sekali.
# Sebaliknya untuk nilai data yang berada di tengah lebih dari data yang dicari, maka pencarian selanjutnya berkisar di elemen tengah ke kiri, dan begitu seterusnya sampai ketemu atau tidak sama sekali.
# Dan untuk data yang terurut menurun. Dalam hal ini menentukan indeks paling awal dan indeks paling akhir, untuk membagi 2 elemen yang ada.

Langkah - Langkah Binary Search :

1. Asumsikan data terurut secara horizontal dari indeks 0 sampai n-1, untuk menggunakan istilah kanan dan kiri.
2. Misalkan kumpulan data yang berjumlah n adalah larik L, dan data yang akan dicari adalah X.
3. Tentukan nilai indeks awal i = 0 dan indeks akhir j = n-1.
4. Tentukan apakah data terurut menurun atau menaik dengan menggunakan membandingkan apakah elemen paling kiri L[0] lebih dari atau kurang dari elemen paling kanan L[n-1].
Jika data di elemen paling kiri L[0] > data di elemen paling kanan L[n-1], maka data terurut menurun.
Jika data di elemen paling kiri L[0] < k =" (i" i =" k." k =" (i"> X, maka pencarian berikutnya dilakukan di sisi kiri indeks k, lakukan proses seperti pada nomor 6, dimana nilai indeks j sekarang sama dengan nilai indeks k sebelumnya.
j = k.
k = (i + j) div 2.
Dan seterusnya sampai nilai X dicari ketemu atau tidak sama sekali.
10. Jika data terurut menurun, maka tukar kondisi yang ada di nomor 8 dan 9.

Contoh program binary Search:
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{
int X,i,j,k,p;
int L[10] = {12,14,15,17,23,25,45,67,68,70};
/* Menentukan apakah terurutmenaik atau menurun */
/* variabel p digunakan untuk kode, apakah menaik atau menurun */
/* jika p = 0,maka data terurut menaik */
/* jika p = 1,maka data terurut menurun */
if (L[0]
{
printf("Data terurut menaik \n");
p = 0;
}
else
{
printf("Data terurut menurun \n");
p = 1;
}
/* input data X yang akan dicari */
printf("Data yang akan dicari = ");scanf("%d",&X);
/* penentuan indeks awal dan akhir semula */
i = 0;
j = 9;
/* proses perulangan untuk menentukan nilai tengah k */
do
{
k = (i + j) / 2;
if (p==0) // jika data terurut menaik
{
if (L[k]==X)
{
printf("Data ditemukan di elemen %d",k);
getch();
return 0; // langsung keluar program
}
else if (L[k]< X)
{
i = k;
}
else
{
j = k;
}
}
else // jika data terurut menurun
{
if (L[k]==X)
{
printf("Data ditemukan di elemen %d",k);
getch();
return 0; // langsung keluar program
}
else if (L[k]> X)
{
i = k;
}
else
{
j = k;
}
}
}
while(k!=0); // sampai nilai k = 0, iterasi berakhir
printf("Data tidak ditemukan!");
getch();
return 0;
}

Sequential Search

Diposting oleh Unknown | 07.04 | | 0 komentar »

Sequential Search adalah membandingkan data-data yang ada dalam kumpulan tersebut yang mulai dari elemen pertama sampai elemen ditemukan, atau sampai elemen terakhir.

Kesimpulan dari kode program di atas, Secara umum pencarian beruntun dan kinerja lambat yang di karenakan danya proses perulangan di dalam program tersebut. Bayangkan jika ada lebih dari 100.000 data itu artinya akan ada 100.000 kali perulangan apabila dalam satu kali proses perulangan membutuhkan waktu 0,01 detik maka akan membutuhkan waktu sekitar 1000 detik karena hal itulah metode ini tidak di gunakan untuk mencari data yang besar. contoh program:
kode program Sequential Search :

#include <iostream.h>
#include <conio.h>

int main(int argc, char* argv[])
{
int X,i,k;
int L[10] = {20,15,22,14,12,10,24,19,18,16};
printf("Data yang akan dicari = ");
scanf("%d",&X);
k = 0;
for(i=0;i<=9;i++)
{
if(L[i]==X)
{
printf("Data ditemukan di elemen %d \n",i);
k++;
}
}
if(k==0)
{
printf("Data tidak ditemukan \n");
}
printf("Jumlah data yang ditemukan = %d",k);
getch();
return 0;
}

Searching,,,,,

Diposting oleh Unknown | 06.38 | | 0 komentar »

nah ketemu lagi, kalian masih ingatkan tentang sorting array yang saya posting kemarin, kali ini saya akan kembali lagi membahas tentang C++ tpi sekarang tidak lagi mengenai Sorting Array tetapi sekarang saya akan membawakan materi baru yaitu mengenai serching, dari pada saya berlama-lama dan kalian bosan membacanya, lebih baik kita mulai az dari apa itu searching

Searching adalah merupakan proses yang fundamental dalam pemrograman, yang menemukan data (nilai) tertentu di dalam sekumpulan data yang bertipe sama dan memiliki Fungsi pencarian itu sendiri adalah untuk memvalidasi atau (mencocokkan) data.

Ada beberapa metode dalam searching untuk mencari data di dalam sekumpulan data yang bertipe sama,dan memiliki dua metode yakni:
1. Metode Pencarian Beruntun (Sequential Search)
2. Metode Pencarian Bagi dua (Binary Search)

Quick Sort

Diposting oleh Unknown | 08.40 | | 0 komentar »

Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga
berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini
hanya mengikuti langkah – langkah sebagai berikut :

  1. Divide
    Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r]
    dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q]
    dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan
    elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada
    elemen q merupakan salah satu bagian dari prosedur pemisahan.
  2. Conquer
    Mengurutkan elemen pada sub-rangkaian secara rekursif
    Pada algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi
    pengurutan elemen – elemen pada sub-array.

Berikut adalah contoh Quik Sort yang saya dapat di internet:
Quick Sort Implementation

#include
#include
#include
#include

int Partition(int low,int high,int arr[]);
void Quick_sort(int low,int high,int arr[]);

void main()
{
int *a,n,low,high,i;
clrscr();
cout<<"/**************************Quick Sort Algorithm Implementation*****************/ "; cout<<"Enter number of elements: "; cin>>n;

a=new int[n];
/* cout<<"enter the elements: "; for(i=0;i>a;*/
for(i=0;i<<" Initial Order of elements "; for(i=0;i<<<" "; cout<<" "; high=n-1; low=0; Quick_sort(low,high,a); cout<<" Final Array After Sorting: "; for(i=0;i<<<" "; getch(); } /*Function for partitioning the array*/ int Partition(int low,int high,int arr[]) { int i,high_vac,low_vac,pivot/*,itr*/; pivot=arr[low]; while(high>low)
{ high_vac=arr[high];

while(pivot<=low) break; high--; high_vac=arr[high]; } arr[low]=high_vac; low_vac=arr[low]; while(pivot>low_vac)
{
if(high<=low) break; low++; low_vac=arr[low]; } arr[high]=low_vac; } arr[low]=pivot; return low; } void Quick_sort(int low,int high,int arr[]) { int Piv_index,i; if(low




Exchange Sort

Diposting oleh Unknown | 08.11 | | 0 komentar »

Exchange Sort sangat mirip dengan Bubble Sort. Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort.Yang jelas ada perbedaannya, perbedaannya dalam hal bagaimana membandingkan antar elemen-elemennya. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot).Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen sebelum/sesudahnya itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.
Programnya algoritmanya juga saya dapat di internet biar tambah jelas nie dia Source Codenya:
void exchange_sort()
{
for (int i=0; i<> data[j]) tukar(i,j); //ascending

Insertion Sort

Diposting oleh Unknown | 07.48 | | 0 komentar »

Masih dalam materi yang sama nie yaitu masih mengenai Sorting Array tapi sekarang dengan cara yang berbeda lagi yaitu tentang Isertion Sort, semoga apa yang saya posting ini bisa membantu kalian,,,,,

Insertion Sort

Algoritma Insertion Sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama), dan yang telah diurutkan (meja kedua). Elemen pertama yang diambil dari bagian array yang belum diurutkan dan kemudian diletakkan pada posisinya sesuai dengan bagian lain dari array yang telah diurutkan. langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan. Klo ngga salah sih kayak itu.
Sekilas algoritma ini tidak jauh berbeda dengan Bubble Sort, namun sesungguhnya berbeda.
Konsep dasarnya yaitu : “Menyisipkan sebuah angka ke posisi yang diinginkan. Angka yang disisipkan sesuai dengan urutan iterasinya. Jumlah iterasi ditentukan oleh banyaknya data atau ‘N’. Iterasi=N”. Udah ada bayangan belum, boleh dibilang ngga terlalu sulit untuk dimengerti sih. Yang penting ngerti konsepnya aja.
Dari pada kalian pusing mending langsung aja ke Source Codenya betul nggak.

Ini dia Source Codenya:

void insertion_sort(){
int temp;
for(int i=1;itemp && j>=0){
data[j+1] = data[j];
j--;
}
data[j+1] = temp;
}

Selection Sort

Diposting oleh Unknown | 07.38 | | 0 komentar »

Wah ni lanjutan dari postingan saya yang kemarin, masih tentang sorting array sih, tapi sekarang tidak mengenai bubble sort lagi, melainkan sekarang mengenai Selection Sort. Nah dari pada kalian lama ngebacanya mendingan saya mulai aja, semoga berguna bagi kalian,,,,,,

Selection Sort merupakan sebuah algoritma pengurutan yang secara berulang mencari item yang belum terurut dan mencari paling sedikit satu untuk dimasukkan ke dalam lokasi akhir.
Metode ini memiliki konsep memilih data yang maksimum/minimum dari suatu kumpulan data larik L, lalu menempatkan data tersebut ke elemen paling akhir atau paling awal sesuai pengurutan yang diinginkan. Data maksimum/minimum yang diperoleh, diasingkan ke tempat lain, dan tidak diikutsertakan pada proses pencarian data maksimum/minimum berikutnya.
Contoh ilustrasi :
Misalkan ada sekumpulan data acak berjumlah n elemen yang disimpan di dalam larik L, akan diurut menaik, maka langkah-langkah yang harus dilakukan adalah:

1. Menentukan jumlah iterasi, yaitu pass = n – 2.
2. Untuk setiap pass ke-i = 0,1,2,...,pass, lakukan:
a. Cari elemen terbesar (maks) dari elemen ke-i sampai ke-(n-1).
b. Pertukarkan maks dengan elemen ke-i.
c. Kurangin n satu (n = n – 1).

Rincian tiap-tiap pas adalah sebagai berikut:

• pass 0
− Cari elemen maksimum di dalam L[0...(n-1)].
− Pertukarakan elemen maksimum dengan elemen L[n-1].
• pass 1
− Cari elemen maksimum di dalam L[0...(n-2)].
− Pertukarakan elemen maksimum dengan elemen L[n-2].
• pass 2
− Cari elemen maksimum di dalam L[0...(n-3)].
− Pertukarakan elemen maksimum dengan elemen L[n-3].
• pass 3
− Cari elemen maksimum di dalam L[0...1].
− Pertukarakan elemen maksimum dengan elemen L[1].

Selection Sort merupakan pengurutan data yang paling buruk, namun metoda paling mudah.
Contoh program:
void selection_sort()
{
for(int i=0;i
pos = i;
for(int j=i+1;j
if(data[j] < data[pos]) pos = j; //ascending
}
if(pos != i) tukar(pos,i);
}
}

Bubble Sort

Diposting oleh Unknown | 06.59 | | 0 komentar »

Bubble Sort merupakan sebuah algoritma penyortiran yang dimulai dan berakhir pada sebuah daftar dengan n elemen dan memindahkan seluruhnya, menguji nilai setiap pasangan item yang berdekatan dan menukarkannya jika mereka tidak berada dalam urutan yang tepat.

Konsep dasarnya yaitu : “Melakukan pembandingan antara ’data[n] dengan data[n+1]’ atau antara ’data[n] dengan data[n-1]’ kemudian jika lebih kecil/besar dilakukan pertukaran. Pada setiap iterasi dapat terjadi beberapa kali pertukaran atau tidak sama sekali. Jumlah iterasi ditentukan oleh banyaknya data atau ‘N’. Iterasi=N-1.”

Bubble sort merupakan sorting paling mudah diantata sorting yang lain. Cara membuat Bubble sort:
• pertama jadikan data pertama sebagai indeks data
• bandingkan data ke indeks dengan data berikutnya
• jika data indeks lebih besar dari data yang dibandingkan tukar isinya
• setelah data indeks selesai dibandingkan simpan data indeks di urutan pertama
• ulangi langkah kedua dimana indeks adalah data kedua dan seterusnya hingga data habis

contoh program bubble sort:
void bubble_sort()
{

For (int i=1;i

{

For (int i=1;i=i;j–)
{
If (data[j] < temp =" data[a];">data[j-1]) //data descending

Download program lebih lengkapnya Disini

Sorting Array

Diposting oleh Unknown | 06.36 | | 0 komentar »

Menurut kamus Indonesia Sorting adalah sebuah proses merangkai benda dalam urutan tertentu atau dalam himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:

  • Pengurutan : merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur,
  • Kategorisasi : pengelompokan dan pemberian label kepada benda dengan sifat yang serupa.

Salah satu cara sorting yang penting adalah mengatur benda informasi dalam urutan alfabetik sesuai dengan hubungan penyusunan yang telah didefinisikan sebelumnya, misal ketika seseorang mensortir buku-buku di perpustakaan berdasarkan judul, subyek atau penulis (Biasanya diurutkan dalam urutan membesar).

Urutan yang dihasilkan dapat membesar atau mengecil, karena biasanya seluruh sorting adalah sorting angka. Sorting dalam ilmu komputer adalah salah satu subjek riset yang paling luas karena kebutuhan mempercepat operasi dalam ribuan atau jutaan data selama operasi pencarian.

Tujuan utama mensortir informasi adalah untuk mengoptimalkan tugas tertentu. Pada umumnya, ada dua cara pengelompokan informasi: berdasarkan kategori, misal sebuah katalog belanja di mana barang disusun bersama di bawah judul seperti 'rumah', 'olah raga', 'pakaian wanita', dll. dan berdasarkan intensitas seperti harga, misal dari yang termurah sampai yang termahal.

Pada umumnya ada 2 macam pengurutan, yaitu:

  • Pengurutan secara ascending(urut naik).
  • Pengurutan secara descending(urut turun).

contoh:

Data Acak : 6 8 3 10 34 56 11

Ascending : 3 6 8 10 11 34 56

Descending : 56 34 11 10 8 6 3

Dalam pemrograman algoritma, sorting dapat dilakukan dalam berbagai macam cara, antara lain:

  1. Teoretis : Computational, Complexity Theory, Big O Notation, Total Order, Stability, Comparison Sort.
  2. Exchange Sort : Exchange Sort, Bubble Sort, Coctail Sort, Comb Sort, Gnome Sort, Quick Sort.
  3. Selection Sort : Selection Sort, Heap Sort, Smooth Sort.
  4. insertion Sort : Shell Sort, Tree Sort, Library Sort, Patience Sorting.
  5. Merge Sort : Merge Sort.
  6. Non-Comparison : Radix Sort, Bucket Sort, Counting Sort, Pigeonhole Sort.
  7. Other : Topological Sorting, Sorting Network.


Tapi biasanya yang paling sering di gunakan dalam bahasa pemograman algoritma adalah :

  • Selection Sort, insertion Sort, Bubble Sort, Exchange Sort dan Quick Sort.

Single Linked List Circular

Diposting oleh Unknown | 09.15 | | 0 komentar »

Single Linked List Circular (SLLC) adalah Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya.

Pengertian:
Node : rangkaian beberapa simpul
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar

Contoh single linked list:

#include

#include

struct TNode //deklarasi awal LINKED LIST

{

int data;

TNode *next;

};

TNode *head;

void init()

{

head = NULL;

}

int isEmpty()

{

if(head == NULL) return 1;

else return 0;

}

void insertDepan(int databaru)

{

TNode *baru;

baru = new TNode;

baru->data = databaru;

baru->next = NULL;

if(isEmpty()==1)

{

head=baru;

head->next = NULL;

}

else

{

baru->next = head;

head = baru;

}

cout<

cout<<" Data masuk...\n";

getch();

}

void hapusDepan()

{

TNode *hapus;

int d;

if (isEmpty()==0)

{

if(head->next != NULL)

{

hapus = head;

d = hapus->data;

head = head->next;

delete hapus;

}

else

{

d = head->data;

head = NULL;

}

cout<

cout<<" Data "<<<">

}

else

{

cout<

cout<

cout<<" Linked List Masih kosong...\n";

}

getch();

}

void search(int caridata)

{

TNode *bantu;

bantu = head;

int ketemu = 0;

int index=0;

if(isEmpty()==0)

{

while(bantu!=NULL)

{

bantu->data;

if (caridata == bantu->data)

{

cout<

cout<<" Data Ditemukan..."<

cout<<" Index Ke - "<

ketemu = 1;

break;

}

bantu=bantu->next;

index++;

}

cout<

if (ketemu == 0)

cout<<" Data Tidak Ditemukan..."<

cout<

} else cout<<" Linked List Masih kosong...\n";

getch();

}

void tampil()

{

TNode *bantu;

bantu = head;

if(isEmpty()==0)

{

cout<<" Data Linked List"<

cout<<"================================="<

while(bantu!=NULL)

{

cout<<" --> "<data<<" ";

bantu=bantu->next;

}

cout<<" --> NULL";

cout<

} else cout<<" Linked List Masih kosong...\n";

getch();

}

void main()

{

int pil,dataku,cari;

init(); //inisialisasi awal

do

{

clrscr();

cout<<" SINGLE LINKED LIST"<

cout<<"=========================="<

cout<<" 1. Insert List"<

cout<<" 2. Delete Front"<

cout<<" 3. Show Linked List"<

cout<<" 4. Search Data"<

cout<<" 5. Exit"<

cout<<"=========================="<

cout<

cout<<"Pilihan Anda = "; cin>>pil;

switch (pil)

{

case 1 :

cout<

cout<<" Insert Data --> "; cin>>dataku;

insertDepan(dataku);

break;

case 2 :

hapusDepan();

break;

case 3 :

cout<

cout<

tampil();

break;

case 4 :

cout<

cout<<" Data yg Dicari --> "; cin>>cari;

search(cari);

break;

};

}

while (pil != 5);

}

Download program file yang lebih lengkap klik Disini

Followers

Visitor

 

Aloen Pop. Copyright 2008 All Rights Reserved Revolution Two Church theme by Brian Gardner Converted into Blogger Template by Bloganol dot com