Contenu connexe Similaire à Binary search: illustrated step-by-step walk through (6) Plus de Yoshi Watanabe (7) Binary search: illustrated step-by-step walk through2. Iterative binary search
int begin = 0;
int last = array.Length - 1;
int mid = 0;
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
Part #1 Initialize pointers
Part #2 Search
5. begin
0
x
0 <= 3
is true
mid
last
3
0
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
4
12. begin
0
x
0 <= 3
is true
mid
last
3
0
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
5
16. begin
2 <= 3
is true
2
x
last
mid
3
1
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
5
23. begin
0
x
0 <= 3
is true
mid
last
3
0
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
6
27. begin
2 <= 3
is true
2
x
last
mid
3
1
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
6
31. begin
last
3 <= 3
is true
mid
3
3
2
[0]
[1]
[2]
[3]
2
4
5
6
while (begin <= last) {
mid = (begin + last) / 2;
if (array[mid] < x) {
begin = mid + 1;
}
else if (array[mid] > x) {
last = mid - 1;
}
else {
return mid;
}
}
return -1;
x
6