void setup() {

  Serial.begin(9600);                                  //инициализация последовательного порта

  int hw_arr[] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3}; //инициализация целочисленного массива с элементами
  int arr_len = sizeof(hw_arr) / sizeof(hw_arr[0]);    //вычисление длины массива и запись в переменную arr_len
  int arr_scn = 0;                                     //инициализация переменной для записи количества сортировок   
  int arr_com = 0;                                     //инициализация переменной для записи количества сравнений     

  Serial.print("Исходный массив:");                    //
    Serial.print("\t");                                // 
  for (int i = 0; i < arr_len; i++) {                  //вывод в терминал сообщения с содержимым массива                           
        Serial.print(hw_arr[i]);                       //используется цикл for с приращением ограниченным длиной массива  
        Serial.print("\t");                            //последовательный вывод элементов массива 
  }                                                    //через табуляцию для наглядности    
  Serial.println();                                    //
  Serial.println();                                    //  
  
//                                                     // 
  for (int j = 0; j + 1 < arr_len; j++) {              //цикл сортировки значений массива
//                                                     //   
    for (int k = 0; k + 1 < arr_len - j; k++) {        //цикл сравнения элементов массива в каждой итерации
//                                                     //цикла сортировки 
      if (hw_arr[k] > hw_arr[k + 1]) {                 //условие сравнения текущего и следующего элемента  
//                                                     //если условие истинно и текущий элемент больше последующего   
        int tmp = hw_arr[k];                           //значение текущего элемента записывается в переменную tmp 
        hw_arr[k] = hw_arr[k + 1];                     //значению текущего элемента присваивается значение последующего 
        hw_arr[k + 1] = tmp;                           //значению последующего присваивается значение из переменной tmp 
      }                                                //таким образом выполняется перестановка элементов 
    
    arr_com += 1;                                      //накопление количества сравнений с каждым проходом цикла 
    
    Serial.print("Сравнение ");                        // 
    Serial.print(arr_com);                             //вывод в терминал порядкового номера операции сравнения   
    Serial.print("\t\t");                              // 
    for (int i = 0; i < arr_len; i++) {                //вывод в терминал текущего состояния массива                           
       Serial.print(hw_arr[i]);                        //с учетом последней перестановки элементов 
       Serial.print("\t");                             //используется цикл for с приращением ограниченным длиной массива 
    }                                                  //последовательный вывод элементов массива 
    Serial.print("\n");                                //через табуляцию для наглядности 
    }                                                  //   
    
    arr_scn += 1;                                      //накопление количества сортировок с каждым проходом цикла 
    
    Serial.println();                                  //                    
    Serial.print("Результат ");                        //вывод в терминал порядкового номера итерации сортировки     
    Serial.print(arr_scn);                             // 
    Serial.print("\t\t");                              //
    for (int i = 0; i < arr_len; i++) {                //вывод в терминал текущего состояния массива 
        Serial.print(hw_arr[i]);                       //с учетом последней итерации сортировки 
        Serial.print("\t");                            //используется цикл for с приращением ограниченным длиной массива  
    }                                                  //последовательный вывод элементов массива    
    Serial.println();                                  //через табуляцию для наглядности  
    Serial.println();                                  //   
  }                                                    //

  Serial.print("Итоговый массив:\t");                  //вывод в терминал итогового состояния массива после сортировки 
  for (int i = 0; i < arr_len; i++) {                  //используется цикл for с приращением ограниченным длиной массива                           
        Serial.print(hw_arr[i]);                       //последовательный вывод элементов массива 
        Serial.print("\t");                            //через табуляцию для наглядности 
    }                                                  // 
  
  Serial.println();                                    // 
  Serial.println();                                    //вывод в терминал сообщения с итоговым количеством  
  Serial.print("Количество операций сравнения:");      //операций сравнения элементов массива
  Serial.print("\t\t");                                // 
  Serial.println(arr_com);                             //                  

  Serial.print("Количество итераций сортировки:");     //вывод в терминал сообщения с итоговым количеством 
  Serial.print("\t");                                  //итераций сортировки элементов массива 
  Serial.println(arr_scn);                             //              
}

void loop() {

}