Сортировка массива C ++ - проблема с учетом & ldquo; bbba & rdquo; и & ldquo; 0001 & rdquo; как неправильные сорта

Единственный способ, с помощью которого я могу фильтровать представление трассировки стека, - через Mylyn. Если у вас есть активная задача Mylyn, и вы нажмете кнопку «Фокус на активную задачу (экспериментальный)» в окне «Отладка», тогда трассировка стека будет отфильтрована только для отображения тех методов, которые находятся в контексте текущей задачи.

В этом случае вы не будете фильтровать определенные элементы из трассировки стека; скорее всего, все будет отсутствовать по умолчанию, и будут отображаться только некоторые элементы (в контексте задачи).

Вы можете посмотреть этот ответ для получения дополнительной информации о Mylyn.

-3
задан ThermoRestart 3 March 2019 в 12:45
поделиться

3 ответа

Вам не нужно проверять на 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
ответ дан Ted Lyngmo 3 March 2019 в 12:45
поделиться

Проверка на 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.

}
0
ответ дан Gardener 3 March 2019 в 12:45
поделиться

Из вашего кода вам нужно вернуть хотя бы один из них, а затем вернуть 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;
0
ответ дан sachyy 3 March 2019 в 12:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: