// входной массив положим здесь, непринципиально
int Inp_ar[] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3};
void setup() {
  // put your setup code here, to run once:
  // Инициализируем интерфейс
  Serial.begin(9600);
}
// Опять ардуино в роли С-компьютера ;-)
void loop() {
  // put your main code here, to run repeatedly:
  // Посчитаем размер входного массива и забронируем резервный массив
  int Num = sizeof(Inp_ar)/sizeof(Inp_ar[0]);
  int Res_ar[Num];
  // Это распечатка входного массива
  Pr_ar(Inp_ar,Num);
  // заполнение резервного массива из входного
  for (int i = 0; i < Num; i++)
  {
    Res_ar[i] = Inp_ar[i];
  }
  // Пузырьковая сортировка, результат - количество операций
  int Iter = Bubbl_fun(Res_ar,Num);
  // Число итераций запишем
  Serial.println("Number of iterations: "+String(Iter));
  // Отдохнем немного
  delay(5000);
}
// функция пузырьковой сортировки
int Bubbl_fun(int Arg[], int Number)
{
  // Инициализация переменных
  int Result = 0;
  bool Good = false;
  // Первичная распечатка массива (получается две, можно где нибудь убрать)
  Pr_ar(Arg,Number);
  // возьмем do, хотя бы один прогон состоится
  do
  {
    for (int i = 0; i < Number-1; i++)
    {
      // почти для каждого сравним с последующим, если больше обменяем
      if (Arg[i] > Arg[i+1])
      {
        int c = Arg[i+1];
        Arg[i+1] = Arg[i];
        Arg[i] = c;
      }
      // в результате большие поползут вправо, меньшие - влево
    }
    // Распечатка результатов прохода - номер шага и получившийся массив
    Result++;
    Serial.println("Step "+String(Result));
    Pr_ar(Arg,Number);
    // Проверка количества перепутанных элементов
    // Если хотя бы один перепутан - еще итерация
    int Dop = 0;
    for (int i = 0; i < Number-1; i++)
    {
      if (Arg[i] > Arg[i+1])
      {
        Dop ++;        
      }      
    }
    // Если все выровнялись - выходим и отдаем результат
    if (Dop == 0)
    {
      Good = true;
    }
  }
  while (!Good);
  return Result;
}
// функция распечатки массива
void Pr_ar(int Argum[], int Numb)
{
  for (int count = 0; count < Numb; count ++)
  {
    Serial.print(String(Argum[count])+" ");
  }
  Serial.println(" ");
}