2015-01-02 1 views
0

Я пытаюсь понять алгоритм сортировки слиянием. Я прохожу через это шаг за шагом. Вот мой код:После создания динамического массива переменная «i» появляется из ниоткуда

Редактировать: Я также добавил рекурсивную функцию ниже. Проблема заключается в функции слияния.

void mergeSort(vector<int>& arr, int size, int low, int high) 
{ 
    if (low < high) { 
     int middle = (low + high)/2; 
     mergeSort(arr, size, low, middle); 
     mergeSort(arr, size, middle + 1, high); 
     merge(arr, size, low, middle, high); 
    } 
} 

void merge(vector<int>& arr, int size, int low, int middle, int high) 
    { 
     int* temp = new int[size]; 
     for (int i = low; i<high; i++) 
      temp[i] = arr[i]; 
     int i = low; 
     int j = middle + 1; 
     int k = low; 

     while (i <= middle && j <= high) { 
      if (temp[i] <= temp[j]) { 
       arr[k] = temp[i]; 
       i++; 
      } 
      else { 
       arr[k] = temp[j]; 
       j++; 
      } 
      k++; 
     } 
     while (i <= middle) { 
      arr[k] = temp[i]; 
      k++; 
      i++; 
     } 
     delete[] temp; 
     temp = NULL; 
    } 

параметров в функцию «» слияний являются массивом размера = 10, низкого = 0, среднего = 0, и высоким = 1. После первой линии, создавая динамический массив, «я» переменная всплывает с причудливым значением -858993460. После цикла for он становится равным 1. После строки int i = low; I остается при значении 1 и не равен значению low, равному нулю. Как это возможно? Я ем свои мозги здесь. Спасибо.

+0

Не совсем уверен (я новичок в C++), но, возможно, при вызове метода, он уже зарезервирован 'Int i' в стеке. Он содержит фиктивное значение, пока не будет присвоено соответствующее значение. http://stackoverflow.com/questions/6247017/unexplained-c-default-int-values – Caramiriel

ответ

0

«-858993460», в шестнадцатеричном виде, CCCCCCCC, который Visual Studio ставит по умолчанию в DEBUG MODE ». Это когда вы не инициализируете переменную.

Прочитайте этот ответ: https://stackoverflow.com/a/6247048/2696576

Смежные вопросы