мой код
int main()
{
int a[] = {0,1,2,3,4,5,6,7,8,9}; // n =10 , m = 11
int n = sizeof(a)/sizeof(a[0]);
int start = 0;
int m = 11; // m is total elements
int end = m-1; // range 0 to m-1
int result = 0; //missing element from range
int mid;
int flag = 0;
int i =1;
while(start<=end) //binary search
{
mid = start + (end-start)/2;
cout<<a[9]<<" "<<a[10]<<endl;
cout<<mid<<"=="<<a[mid]<<endl;
if(mid == a[mid]){
start = mid+1;
}
else{
end = mid-1;
result = mid;
flag = 1;
}
++i;
}
if(flag == 1)
cout<<result;
else
cout<<"no missing";
}
вывод
9 1988611264
5 == 5
0 и 10
9 5
8 == 8
6 и 10
9 8
9 == 9
9 и 10
9 9
10 == 10
10 и 10
не пропущено // кроме выходных данных должно быть 10
здесь я показываю, как значение a [10] меняется с мусора на другие значения, но почему ???
Учитывая отсортированный массив из n различных целых чисел, где каждое целое число находится в диапазоне от 0 до m-1 и m > п. Найдите наименьшее число, которое отсутствует в массиве.