2013-09-13 4 views
0

В этой функции от nczonline я заметил, что слева и справа скопированы в i и j, но никогда не используются после этого. Есть ли способ устранить либо левый, либо правый, или i и j?Можно ли здесь исключить переменные переменных?

function partition(items, left, right) { 
    var pivot = items[Math.floor((right + left)/2)], 
     i  = left, 
     j  = right; 
    while (i <= j) { 
     while (items[i] < pivot) { 
      i++; 
     } 
     while (items[j] > pivot) { 
      j--; 
     } 
     if (i <= j) { 
      swap(items, i, j); 
      i++; 
      j--; 
     } 
    } 
    return i; 
} 
+1

Это похоже на часть быстрой сортировки? – crush

ответ

0

Это просто так, чтобы оно было короче при повторном использовании в остальной части функции.

Использование i & j непосредственно в качестве имен аргументов недостаточно для описания, поэтому он назначает их более коротким переменным внутри тела функции.

+0

Ну ... да или нет? –

+0

@ employee-0 - Правильный ответ: да. Правильный ответ: зачем вам? –

+0

переменные - это реальные места в памяти, которые вы используете в качестве ресурсов, они не являются красивыми дескрипторами. никогда не принимайте больше, чем вам нужно, чем оттуда вы можете описать или прокомментировать код. –

0

Да, вы можете заменить все экземпляры i на left и все экземпляры j с right.

Но зачем вы хотите это делать?

+0

или просто замените параметры функции на i и j. –

+0

да, вы могли бы это сделать, но это сделает подпись функции менее описательной. – Chronial

+0

@Chronial. Для чего предназначена документация. – crush

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