(sequential & binary search)
Transcript of (sequential & binary search)
![Page 1: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/1.jpg)
SearchingSearchingSearchingSearching(sequential & binary search)(sequential & binary search)(sequential & binary search)(sequential & binary search)
![Page 2: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/2.jpg)
Overview
• Konsep & Istilah• Sequential Search• Binary Search• Perbandingan Unjuk Kerja(Performance)
• Review
![Page 3: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/3.jpg)
Konsep dan Istilah
• Internal Search – algoritma pencarianyang dilakukan dalam main memory komputer
• External Search –algoritma pencarianyang melibatkan external media menambah main memory
![Page 4: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/4.jpg)
Konsep dan Istilah
• Key – sebuah subset dari isi sebuahdata yang digunakan untukperbandingan selama prosespencarian
• Big-O Notation – notasi yang digunakan untuk mengindikasikankenaikan (Order of growth) unjukkerja dari sebuah algoritma searching
![Page 5: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/5.jpg)
Search
[ 0 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 700 ]Number 506643548Number 233667136Number 281942902
Number 155778322Number 580625685Number 701466868 …
Number 580625685
Setiap record dalam list memiliki sebuahassociated key.Pada contoh ini, key-nya = ID numbers.
Berikan sebuah key, bagaimana caramenemukan recordnya dari list secaraefektif ?
![Page 6: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/6.jpg)
Sequential Search• Begin at the beginning (or the end)• Cek seluruh record dalam array ataulist, baca satu persatu.
• Temukan record sesuai dengan key yang dicari
• Proses Searching berhenti karena salahsatu alasan– Success – Found the target key– End of List – No more records to compare
• Diaplikasikan pada Array (sorted & unsorted) atau Linked List
![Page 7: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/7.jpg)
Sequential Search - Unsorted
GordonAndrewMichaelBillScottLukeAdrianDennis
The ListScott
Target Key
Compare Target Key withList[0] GordonList[1] AndrewList[2] MichaelList[3] BillList[4] Scott – SUCCESS!
5 comparisons required
![Page 8: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/8.jpg)
Sequential Search - Sorted
Gordon
Andrew
Michael
Bill
Scott
Luke
Adrian
Dennis
The ListJeff
Target Key
Compare Target Key withList[0] AdrianList[1] AndrewList[2] BillList[3] DennisList[4] GordonList[5] Luke – Not Found!
6 comparisons required
![Page 9: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/9.jpg)
Sequential Search Analysis
• Bagaimana worst case dan average case untuk metode sequential search?
• Kita harus mendefinisikan O-notation untuk nilai dari operasi yang dibutuhkan dalam pencarian.
• Jumlah operasi pencarianbergantung pada nilai n, yaitu jumlahelemen dalam list
![Page 10: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/10.jpg)
Worst Case Time for Sequential Search
• Untuk sebuah array dengan n elemen, makaworst case time untuk sequential search �requires n array accesses: O(n).
• Kondisi yang mengharuskan pengecekanterhadap semua elemen array (n record) adalah:– Record yang dicari berada pada posisiterakhir dari array
– Setelah pengecekan seluruh elemen array, ternyata record yang dicari tidak berhasilditemukan dalam array tersebut
![Page 11: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/11.jpg)
Algoritma Sequential Search1. i ← 02. ketemu ← false3. Selama (tidak ketemu) dan (i < N) kerjakan baris
44. Jika (Data[i] = key) maka
ketemu ← true jika tidak
i ← i + 15. Jika (ketemu) maka
i adalah indeks dari data yang dicari jika tidak
data tidak ditemukan
![Page 12: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/12.jpg)
Binary Search
• Define working range as entire list• Repeat till done
– Select the middle record– Compare the target key value with the key of the selected “record”
– Comparison results:• Key < middle record : Range = First half• Key > middle record : Range = Last half• Key = middle record: Success, Done
• Applies only to Sorted Array List
![Page 13: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/13.jpg)
Binary Search
Scott
Gordon
Andrew
Michael
Bill
Luke
AdrianThe List
BillTarget Key
Compare Target Key withList[3] Gordon (high)List[1] Andrew (low)List[2] Bill (match)
3 comparisons required
![Page 14: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/14.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
![Page 15: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/15.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Find approximate midpoint
![Page 16: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/16.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Is 7 = midpoint key? NO.
![Page 17: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/17.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Is 7 < midpoint key? YES.
![Page 18: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/18.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Search for the target in the area before midpoint.
![Page 19: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/19.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Find approximate midpoint
![Page 20: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/20.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Target = key of midpoint? NO.
![Page 21: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/21.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Target < key of midpoint? NO.
![Page 22: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/22.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Target > key of midpoint? YES.
![Page 23: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/23.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Search for the target in the area after midpoint.
![Page 24: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/24.jpg)
Binary Search
[ 0 ] [ 1 ]
Example: sorted array of integer keys. Target=7.
3 6 7 11 32 33 53
[ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ]
Find approximate midpoint.Is target = midpoint key? YES
![Page 25: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/25.jpg)
Algoritma Binary Search
1. L ← 02. R ← N – 13. ketemu ← false4. Selama (L <= R) dan (tidak ketemu) kerjakan baris 5
sampai dengan 8 5. m ← (L + R) / 26. Jika (Data[m] = key) maka ketemu ← true7. Jika (key < Data[m]) maka R ← m – 18. Jika (key > Data[m]) maka L ← m + 19. Jika (ketemu)
maka m adalah indeks dari data yang dicarijika tidak
data tidak ditemukan
![Page 26: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/26.jpg)
Binary Search Implementationvoid search(const int a[ ], size_t first, size_t size, int target, bool& found, size_t&
location){
size_t middle;if(size == 0) found = false;else {
middle = first + size/2;if(target == a[middle]){
location = middle;found = true;
}else if (target < a[middle])
// target is less than middle, so search subarray before middlesearch(a, first, size/2, target, found, location);
else // target is greater than middle, so search subarray after middlesearch(a, middle+1, (size-1)/2, target, found, location);
}}
![Page 27: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/27.jpg)
Time complexity
•Let T(n) denote the time complexity of binary search algorithm on n numbers.
•We call this formula a recurrence.
T(n/2) + 1 otherwise0 if n=1T(n) =
![Page 28: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/28.jpg)
0 if n = 1A(n) = A(n/2)+1 if n >1A(n) = A(2k)
= A(2k-1) + 1 = A(2k-2) + 1 + 1 = A(2k-2) + 2
A(2k-i) + i= A(2k-k) + k= A(20) + k = A(1) + k = 0 + k = k
n = 2k → k = 2log nA(n) = 2log n
![Page 29: (sequential & binary search)](https://reader033.fdocuments.in/reader033/viewer/2022051404/5849c5961a28aba93a93a5af/html5/thumbnails/29.jpg)
Performance Comparisons
20220 =
1,048,576
14214 = 16,384
2 log n = 7
27 = 128
Binary Search(Maximum)
500,0005,00050Sequential Search(Average)
List Size: 1,000,000 elements
List Size:10,000 elements
List Size:100
elements
Search Algorithm