Единственный способ, с помощью которого я могу фильтровать представление трассировки стека, - через Mylyn. Если у вас есть активная задача Mylyn, и вы нажмете кнопку «Фокус на активную задачу (экспериментальный)» в окне «Отладка», тогда трассировка стека будет отфильтрована только для отображения тех методов, которые находятся в контексте текущей задачи.
В этом случае вы не будете фильтровать определенные элементы из трассировки стека; скорее всего, все будет отсутствовать по умолчанию, и будут отображаться только некоторые элементы (в контексте задачи).
Вы можете посмотреть этот ответ для получения дополнительной информации о Mylyn.
Вам не нужно проверять на 0 или 1 при запуске (поскольку цикл for уже имеет условие i<len
и будет ложным как для 0, так и для 1), но вам нужно переместить return true
из петля. Вы не знаете, что он отсортирован, пока не сравните все элементы:
for(int i=1; i<len; ++i) {
if(sArr[i-1] > sArr[i]) return false;
}
return true;
Проверка на 0 и 1 - хорошая идея в рекурсивном случае. Эта функция может быть вызвана рекурсивно, так что вы можете оставить это. Вы исключили рекурсию и использовали цикл for. Вот исправленный код, который ожидает, пока после цикла for не будет возвращено значение true, если текущие пары отсортированы правильно.
#include <iostream>
using namespace std;
bool IsArraySorted(int sArr[], int len)
{
//is the array ordered?
//if more than 1 element <> can do a comparison
for (int i = 0; i < len - 1; i++) {
if (sArr[i] > sArr[i + 1]) {
cout << "notOrdered" << endl; // call before return :-)
return false;
}
}
cout << "Ordered" << endl;
return true; //here it must be ordered.
}
Из вашего кода вам нужно вернуть хотя бы один из них, а затем вернуть true, когда все в порядке.
** также нужно работать только до (длина -1)
for (int i=0; i<len-1; i++)
{
if ( sArr[i] > sArr[i+1])
{
return false;
cout<<"notOrdered"<<endl;
}
}
cout<<"isOrdered"<<endl;
return true;