Выражение j > 0 && a[j - 1] > value_to_insert
появляется в определении функции sort_ints
. Почему было бы неприемлемо переписать это как a[j-1] > value_to_insert && j > 0
? Я попробовал поставить условие по-другому, и он дал мне тот же результат, что и оригинал.В чем разница между этими двумя условиями?
Вот определение функции:
void sort_ints(int *a, int n)
{
int i;
int j;
int value_to_insert;
for (i = 1; i < n; i++) {
value_to_insert = a[i];
/* Shift values greater than value_to_insert. */
j = i;
while (j > 0 && a[j - 1] > value_to_insert) {
a[j] = a[j - 1];
j--;
}
a[j] = value_to_insert;
}
}
«Предоставление того же выхода» - это не то же самое, что «правильная программа», к сожалению. –