The Binary Search Algorithm in Structured Flowchart Form
The Binary Search Algorithm in Structured Flowchart Form Implemented in Both C/C++ and Java Bary W Pollack Dec. 28, 2001 Binary Search
Main A = array of int LTH = length of A Main Print “Demonstrate Binary Search” For i = 0 thru LTH-1 by 1 A [i] = i For i = -1 thru LTH by 1 Print “i is at Binary. Search (i, A, LTH )” Print “Fin!” Return 0 Binary Search 2
Binary Search Flowchart Binary. Search (Key, A, LTH) Locn = -1 Lo = 0 Hi = LTH - 1 While Hi > Lo m = (Lo + Hi) / 2 Key = A[m] Locn = m Break Key < A[m] Hi = m-1 Lo = m+1 Return Locn Binary Search 3
C/C++ Main Routine //-------------------// File: Binary. Search. c //-------------------// Demonstrate the Binary. Search function //-------------------#include <stdio. h> int main (void) { const int LTH = 10; int i, n. Array [LTH+1]; int Binary. Search (const int v, const int a [], const int n. Lth); puts ("Demonstrate Binary Searchn"); for (i = 0; i < LTH; i++) n. Array[i] = i; for (i = -1; i <= LTH; i++) printf ("%3 d is at %dn", i, Binary. Search (i, n. Array, LTH)); } puts ("n. Fin!"); return (0); Binary Search 4
C/C++ Binary Search Fcn //----------------------// Binary Search Algorithm: // Divide the remaining table in half // Check the midpoint; if found, DONE // If not found, consider the first half // or second half, depending. . . // and do Binary Search on it // If the partition size goes to ONE, the // item is NOT present in the table //----------------------int Binary. Search (const int n. Key, const int n. Array [], const int n. Lth) { int n. Loc = -1, n. Low = 0, n. High = n. Lth-1; while (n. High >= n. Low) { int m = (n. Low + n. High) / 2; if (n. Key == n. Array [m]) { n. Loc = m; break; } if (n. Key < n. Array [m]) n. High = m - 1; else n. Low = m + 1; } return n. Loc; } Binary Search 5
C/C++ Program Output Demonstrate Binary Search -1 0 1 2 3 4 5 6 7 8 9 10 is is is at at at -1 0 1 2 3 4 5 6 7 8 9 -1 Fin! Binary Search 6
Java Public Main Class // // File: Binary. Search. java Demonstrate the binary. Search method public class Binary. Search { Binary. Search(int[] n. Array) { for (int i = 0; i < n. Array. length; i++) n. Array[i] = i; for (int i = -1; i <= n. Array. length; i++) System. out. println(i + " is at " + binary. Search(i, n. Array)); } public static void main(String[] args) { System. out. println("Demonstrate " + "Binary Search"); System. out. println(); new Binary. Search(new int[10] System. out. println(); System. out. println("Fin!"); } Binary Search 7
Java Binary Search Method //----------------------// Binary Search Algorithm: // Divide the remaining table in half // Check the midpoint; if found, DONE // If not found, consider the first half // or second half, depending. . . // and do Binary Search on it // If the partition size goes to ONE, the // item is NOT present in the table //----------------------int binary. Search (final int n. Key, final int n. Array []) { int n. Loc=-1, n. Low=0, n. High=n. Array. length-1; while (n. High >= n. Low) { int m = (n. Low + n. High) / 2; if (n. Key == n. Array [m]) { n. Loc = m; break; } if (n. Key < n. Array [m]) n. High = m - 1; else n. Low = m + 1; } return n. Loc; } Binary Search 8
Java Program Output Demonstrate Binary Search -1 is at -1 0 is at 0 1 is at 1 2 is at 2 3 is at 3 4 is at 4 5 is at 5 6 is at 6 7 is at 7 8 is at 8 9 is at 9 10 is at -1 Fin! Binary Search 9
Binary Search 10
- Slides: 10