Если вы можете зарезервировать еще немного памяти, вы можете сканировать свой массив один раз, получить индексы совпадающих значений и сохранить их в другом массиве. Этот новый массив будет значительно короче, поскольку он имеет только индексы значений, которые соответствуют определенному шаблону! Что-то вроде этого
int original_array[SOME_SIZE];
int new_array[LESS_THAN_SOME__SIZE];
for (int i=0,j=0; i<SOME_SIZE; i++)
{
if (original_array[i]> LOWER_LIMIT && original_array[i]< HIGHER_LIMIT)
{
new_array[j++] = i;
}
}
Вы должны делать выше один раз и образуют теперь,
for (int i=0; i< LESS_THAN_SOME_SIZE; i++)
{
if (original_array[new_array[i]]> LOWER_LIMIT && original_array[new_array[i]]< HIGHER_LIMIT)
{
printf("Success! Found Value %d\n", original_array[new_array[i]])
}
}
Так за счет некоторой памяти, вы можете сэкономить значительное количество времени. Даже если вы потратите некоторое время на сортировку, вы должны разобрать отсортированный массив каждый раз. Этот метод минимизирует длину массива, а также время сортировки (по стоимости дополнительной памяти, конечно :))
Являются ли условия такими же простыми, как это? – svick