Rabu, 26 Mei 2010

Searching

D:\My Documents\algor\algor2\Search.doc Created by Yokivox
Search
1. Linear search
Syarat
Tabel : Sort / bebas
Data masukan banyak : sort / bebas
Tabel Data
A D
C B
D
B
E
Ciri : Selalu kembali keasal pencarian untuk data berikutnya.
2. Sequential search
Syarat
Tabel : Sort
Data masukan banyak : Sort
Tabel Data
A B
B D
C
D
E
Ciri : pencarian data kedua mulai dari data pertama yang telah ditemukan.
3. Binary search
Syarat
Tabel : Sort
Data masukan banyak : Bebas
Tabel Data
A D
B B
C
D
E
F
G
Misal:
Batas bawah = 0
Batas atas = 7, jika ganjil + 1 = 8
Indeks = (BB + BA)/2=4
Lanjut……..
Batas bawah = 4
Batas atas = tetap
Indeks = (BB + BA)/2=6……terus
bagi sampai ketemu
Ciri : pencarian data membagi tabel
menjadi dua, kemudian membagi lagi
hasil baginya terus sampai ketemu.
Potongan Algor binary
Array tabel[8], Input(data)
Int kiri=1, kanan=n, Cari=0;
While (cari <> 0 and kiri<=kanan)
Lokasi=(kiri+kanan)/2;
IF tabel[lokasi]=cari then
Cari=1;
ELSE
If tabel[lokasi] < data then
D:\My Documents\algor\algor2\Search.doc Created by Yokivox
Kiri = lokasi + 1;
Else
Kanan = lokasi -1;
Endif
Endif
IF Cari=1 then
Idx=lokasi;
Else
Output(tidak ditemukan);
Endif
#include
#include
int BinarySearch(int [], int, int);
int main()
{
clrscr();
const int NUMEL = 10;
int nums[NUMEL] = {5,10,22,32,45,67,73,98,99,101};
int item, location;
cout << "Enter the item you are searching for: ";
cin >> item;
location = BinarySearch(nums, NUMEL, item);
if (location > -1)
cout << "The item was found at index location "<< location <<
endl;
else
cout << "The item was not found in the list\n";
getch();
return 0;
}
// this function returns the location of key in the list
// a -1 is returned if the value is not found
int BinarySearch(int list[], int size, int key)
{
int left, right, midpt;
left = 0;
right = size - 1;
while (left <= right)
{
midpt = (int) ((left + right) / 2);
if (key == list[midpt])
{
return midpt; //data is found
}
D:\My Documents\algor\algor2\Search.doc Created by Yokivox
else if (key > list[midpt])
left = midpt + 1;
else
right = midpt - 1;
}
return -1; //return indicate that data is’t found
}

Tidak ada komentar:

Posting Komentar