В массиве c ++ при поиске недостающего элемента обнаружена непредвиденная проблема со значением мусора - PullRequest
0 голосов
/ 02 мая 2020

мой код

  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 > п. Найдите наименьшее число, которое отсутствует в массиве.

...