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() {
}