// Реализация алгоритма простой пузырьковой сортировки заменой
int arr[] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3};
int size = sizeof(arr) / sizeof(arr[0]);
void setup() {
Serial.begin(115200); // Инициализируем последовательную связь
}
void printArray(int arr[], int size) {
for (int i = 0; i <size; i++) {
Serial.print(arr[i]);
Serial.print(" ");
}
}
void loop() {
Serial.println("Пузырьковая сортировка ");
Serial.print("Исходный массив: ");
printArray(arr,size);
Serial.println();
bubbleSort();
while(true){}
}
void bubbleSort()
{
int templ; /*Временная ячейка в которую при сортировке запишем
больший элемент для записи в следующую ячейку массива*/
int iter = 0; // количество итераций
bool change; // замена элементов и изменнения в массиве есть
for (int i = 0; i <size - 1; i++) {
change = false;
for (int j = 0; j <size - i - 1; j++) {
if (arr[j] > arr[j + 1]) { // Если элемент массива больше следующего элемента то
// Меняем местами соседние элементы
templ = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = templ;
change = true; // замена элементов и изменнения в массиве есть
// Вывод промежуточного массива на каждой итерации сортировки
Serial.print("Итерация ");
Serial.print(iter +=1);
Serial.print(": ");
printArray(arr,size);
Serial.println();
//iter++;
}
}
if (!change) {
Serial.println("Массив уже отсортирован, дальнейшие итерации не нужны");
break; // Массив уже отсортирован, дальнейшие итерации не нужны
}
}
}