int FindValue_F(const int* br, int n, int val)
{
assert(br != nullptr);
int pos = -1;
for (int i = 0; i < n; ++i)
{
if (br[i] == val)
{
pos = i;
break;
}
}
return pos;
}
int FindValue_W(const int* br, int n, int val)
{
assert(br != nullptr);
int pos = n - 1;
while (pos >= 0 && br[pos] != val)
{
--pos;
}
return pos;
}
int FindValue_2(const int* br, int n, int val)
{
assert(br != nullptr);
int pos = -1;
int left = 0; int right = n - 1;
while (left <= right)
{
int mid = (right - left) / 2 + left;
if (val < br[mid])
{
right = mid - 1;
}
else if (val > br[mid])
{
left = mid + 1;
}
else
{
pos = mid;
break;
}
}
return pos;
}
int FindValue_22(const int* br, int n, int val)
{
assert(br != nullptr);
int pos = -1;
int left = 0; int right = n - 1;
while (left <= right)
{
int mid = (right - left) / 2 + left;
if (val < br[mid])
{
right = mid - 1;
}
else if (val > br[mid])
{
left = mid + 1;
}
else
{
if (mid > left && br[mid - 1] == val)
{
right = mid - 1;
}
else
{
pos = mid;
break;
}
}
}
return pos;
}