2015-09-27 2 views
0

Итак, скажем, у нас есть восходящий массив размером десять, который идет от 1-> 10. Я понимаю расщепление массива, но то, что я, кажется, не понимаю, - это когда происходит назначение. Вот моя текущая интерпретация того, что это означает:MergesSort и где действительно присваиваются задания?

(1) 1,2,3,4,5,6,7,8,9,10 
    (2) 1,2,3,4,5  6,7,8,9,10 
    (3) 1,2 3,4 5  6,7 8,9 10 
    (4) 1 2 | 3 4 | 5  | 6 7 | 8 9 | 10 
    (5) 1,2 3,4  5   6,7  8,9  10 
    //(5.5) 1,2,3,4 5   6,7,8,9 10 
    (6) 1,2,3,4,5  6,7,8,9,10 
    (7) 1,2,3,4,5,6,7,8,9,10 

Я уверен, если мы переходим от шага 5 до 6, или если мы делаем шаг 5.5. Кроме этого, я предполагаю, что на этапе 5 имеется 10 заданий, на шаге 6 имеется еще 10 заданий, а на этапе 7 - еще 10 на 30 заданий. Я уверен, что это должно быть неправильно, так как я не уверен, что считаются шаги (2), (3), (4) или если я даже рассчитываю назначения для начала. Спасибо вам за помощь.

+0

Чтобы подсчитать назначения переменных, нам нужно знать, как эта конкретная реализация mergesort использует переменные. Даже если нам нужно только подсчитывать присваивания элементам массива, имеет значение реализация (например, реализация может попытаться повторно использовать массивы или использовать новый массив на каждом шаге, что, очевидно, повлияет на количество назначений). – meriton

+0

Это даже зависит от ввода, 0 назначений в этом случае, потому что от 1 до 10 уже отсортировано. – Wouter

+0

, но не объединяет счет массива как назначение? Давайте просто скажем, что это общий рекурсивный слияние. – chris123

ответ

0

Вы должны рассчитывать сравнения. Число сравнений - O (N log N)

+0

Откуда вы знаете, что OP должен сравнивать сравнения, а не задания? – meriton

+0

Потому что OP помечен большой o и не уверен, что считать. – Wouter