2016-12-31 11 views
-3

В основном я заменил n на aData[i] в Неработающий. Я пропустил что-то принципиально неправильное? Вторая реализация завершается с ошибкой по тем же данным TEST.Сравнение двух (почти идентичных) реализаций Sorting Sort; один из них не прошел

Передача Реализация:

static long[] sort(long[] aData) { 
    for (int i = 1; i < aData.length; i++) { 
     long n = aData[i]; 

     int j = i - 1; 
     while (j >= 0 && aData[j] > n) { 
      aData[j + 1] = aData[j]; 
      j--; 
     } 
     aData[j + 1] = n; 
    } 
    return aData; 
} 

В противном случае реализация:

static long[] sort(long[] aData) { 
    for (int i = 1; i < aData.length; i++) { 
     int j = i - 1; 
     while (j >= 0 && aData[j] > aData[i]) { 
      aData[j + 1] = aData[j]; 
      j--; 
     } 
     aData[j + 1] = aData[i]; 
    } 
    return aData; 
} 
+0

Вопрос проголосовали без указания _reason_. Хорошие шаги. Хранители. –

+0

Этот вопрос был отправлен без чтения и понимания того, как работает этот сайт. Пожалуйста, посетите [помощь] и прочитайте [ask]. Проводка кода и высказывание, по сути, «пожалуйста, отлаживайте это для меня» считается вне темы. –

+1

Ну, если честно, почти 95% времени я задаю вопрос, он отмечен как не по теме. Я всерьез воздерживаюсь от каких-либо вопросов относительно SO из-за того, что ** FEAR ** отмечен как ** OFF-TOPIC кем-то или другим. Я обычно очень осторожен. Этот вопрос был пропущен на CR, после этого я пришел к SO, и здесь проголосовали. В полной честности я не знаю, где поставить вопрос, потому что определение вопроса _GOOD_ на SO очень-очень субъективно. Надеюсь, вы понимаете, что я говорю. –

ответ

2

В первой итерации цикла в то время, j + 1 == i. Поэтому, когда вы пишете aData[j + 1] = aData[j], вы изменяете значение aData[i] внутри цикла.

В исходной версии n является постоянным на протяжении всей операции. Также обратите внимание, что использование aData[i] вместо n вряд ли улучшит производительность (во всяком случае, вероятно, будет медленнее).

+0

Получил это. Я чувствую себя глупо. –