void setup() {
// put your setup code here, to run once:
const int arrSize = 10; // Размер массива
int arr[arrSize] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3}; // Массив заданный
Serial.begin(9600); // Инициация последовательного порта
Serial.println("Дан массив:");
PrintArray(arr, arrSize); // Вывод массива в порт
Serial.println("\nМаксимальный элемент равен " + String(fMax(arr, arrSize)));
Serial.println("Минимальный элемент равен " + String(fMin(arr, arrSize)));
Serial.println("Среднее арифметическое массива равно " + String(fAvg(arr, arrSize)));
BubbleSort(arr, arrSize); // Сортировка пузырьком
}
void loop() {
// put your main code here, to run repeatedly:
}
// Функция нахождения минимума
int fMin(int arr[], int arrSize) {
int minElem = arr[0];
for (int i = 1; i < arrSize; i++) {
if (arr[i] < minElem) minElem = arr[i];
}
return minElem;
}
// Функция нахождения максимума
int fMax(int arr[], int arrSize) {
int maxElem = arr[0];
for (int i = 1; i < arrSize; i++) {
if (arr[i] > maxElem) maxElem = arr[i];
}
return maxElem;
}
// Функция вычисления среднего арифметического
float fAvg(int arr[], int arrSize) {
float avg = 0;
for (int i = 0; i < arrSize; i++) {
avg += float(arr[i]);
}
return avg / float(arrSize);
}
// Вывод массива
void PrintArray(int arr[], int arrSize) {
for (int i = 0; i < arrSize - 1; i++) {
Serial.print(arr[i]);
Serial.print(" "); // Элементы массива выводятся через 2 пробела
}
Serial.print(arr[arrSize - 1]); // После последнего элемента пробел не ставится
}
// Пузырьковая сортировка
void BubbleSort(int arr[], int arrSize) {
Serial.println("Сортировка пузырьком:");
PrintArray(arr, arrSize); // Вывод в порт изначального массива
Serial.println();
bool isDone = false; // Сортировка не завершена
while (isDone == false) {
isDone = true;
for (int i = 1; i < arrSize; i++) {
if (arr[i - 1] > arr[i]) { // Замена двух элементов массива, если они стоят не в порядке возрастания
arr[i - 1] += arr[i];
arr[i] = arr[i - 1] - arr[i];
arr[i - 1] -= arr[i];
PrintArray(arr, arrSize); // Вывод промежуточного результата после каждой итерации
Serial.println();
isDone = false; // Если произошла замена элемента, сортировка не завершена
}
}
}
Serial.println("Сортировка завершена!");
}