2014-11-18 3 views
1

В настоящее время я работаю над заданием, которое просит нас реализовать несколько разных типов и ввести переменные счетчика для измерения времени выполнения.Измерение времени выполнения с переменной счетчика

Мой вопрос в том, что я смущен тем, включать или не включать определенные «операции» в качестве чего-то, что увеличило бы мой счетчик. Например, мой учебник говорит, что это:

....

Таким образом, от того, что я понимаю, я должен быть подсчет «сравнения», но я не понимаю, если это относится к тому, если заявления, в то время как петли и т. д.

Например, вот мой способ сортировки.

float insertionSort(int theArray[], int n) { 
    float count = 0; 

    for (int unsorted = 1; unsorted < n; unsorted++) { 
     int nextItem = theArray[unsorted]; 
     int loc = unsorted; 

     while ((loc > 0) && (theArray[loc - 1] > nextItem)) { 
      theArray[loc] = theArray[loc - 1]; 
      theArray[loc] = nextItem; 
      loc--; 
      count += 4; 
     } 
    } 

    return count; 
} 

Как вы можете видеть, я увеличиваю счет на 4 для каждой итерации цикла while. Я думаю, это действительно подчеркивает мой вопрос.

Мои рассуждения в том, что мы делаем два сравнения в условном операторе цикла в то время как:

(LOC> 0 & & theArray [Loc - 1]> nextItem)

После этого, мы делаем два шага в массиве. По моему мнению, это означает, что мы выполнили 4 «операции», и мы будем увеличивать счетчик на 4 для измерения времени выполнения в конце выполнения.

Это правильно? Большое спасибо за любую помощь.

ответ

1

В этом случае количество ваших обменов пропорционально количеству ваших сравнений. Кроме того, ваш loc > 0 - это то, что я считаю «случайной операцией», как указано в этом отрывке. Таким образом, при условии, что сравнения и движения являются постоянными операциями времени (которые они предназначены для целых чисел), вы получите те же тенденции в своих данных, просто увеличивая счетчик после каждой итерации цикла.

+1

Да, я не уверен, как я не понимал, что они просто действуют как константы, так как они присутствуют на каждой итерации. Большое спасибо, это было хорошее понимание. – user16666322

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