-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbinary_search.java
143 lines (126 loc) · 3.08 KB
/
binary_search.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
class BinarySearch {
public static void main(String[] a) {
System.out.println(new BS().Start(20));
}
}
// This class contains an array of integers and
// methods to initialize, print and search the array
// using Binary Search
class BS {
int[] number;
int size;
// Invoke methods to initialize, print and search
// for elements on the array
public int Start(int sz) {
int aux01;
int aux02;
aux01 = this.Init(sz);
aux02 = this.Print();
if (this.Search(8)) System.out.println(1);
else System.out.println(0);
if (this.Search(19)) System.out.println(1);
else System.out.println(0);
if (this.Search(20)) System.out.println(1);
else System.out.println(0);
if (this.Search(21)) System.out.println(1);
else System.out.println(0);
if (this.Search(37)) System.out.println(1);
else System.out.println(0);
if (this.Search(38)) System.out.println(1);
else System.out.println(0);
if (this.Search(39)) System.out.println(1);
else System.out.println(0);
if (this.Search(50)) System.out.println(1);
else System.out.println(0);
return 999;
}
// Search for a specific value (num) using
// binary search
public boolean Search(int num) {
boolean bs01;
int right;
int left;
boolean var_cont;
int medium;
int aux01;
int nt;
aux01 = 0;
bs01 = false;
right = number.length;
right = right - 1;
left = 0;
var_cont = true;
while (var_cont) {
medium = left + right;
medium = this.Div(medium);
aux01 = number[medium];
if (num < aux01) right = medium - 1;
else left = medium + 1;
if (this.Compare(aux01, num)) var_cont = false;
else var_cont = true;
if (right < left) var_cont = false;
else nt = 0;
}
if (this.Compare(aux01, num)) bs01 = true;
else bs01 = false;
return bs01;
}
// This method computes and returns the
// integer division of a number (num) by 2
public int Div(int num) {
int count01;
int count02;
int aux03;
count01 = 0;
count02 = 0;
aux03 = num - 1;
while (count02 < aux03) {
count01 = count01 + 1;
count02 = count02 + 2;
}
return count01;
}
// This method compares two integers and
// returns true if they are equal and false
// otherwise
public boolean Compare(int num1, int num2) {
boolean retval;
int aux02;
retval = false;
aux02 = num2 + 1;
if (num1 < num2) retval = false;
else if (!(num1 < aux02)) retval = false;
else retval = true;
return retval;
}
// Print the integer array
public int Print() {
int j;
j = 1;
while (j < (size)) {
System.out.println(number[j]);
j = j + 1;
}
System.out.println(99999);
return 0;
}
// Initialize the integer array
public int Init(int sz) {
int j;
int k;
int aux02;
int aux01;
size = sz;
number = new int[sz];
j = 1;
k = size + 1;
while (j < (size)) {
aux01 = 2 * j;
aux02 = k - 3;
number[j] = aux01 + aux02;
j = j + 1;
k = k - 1;
}
return 0;
}
}