下面是一个使用Arduino编写的插入排序算法与结构体数组的示例:
struct Person {
String name;
int age;
};
void insertionSort(Person arr[], int n) {
int i, j;
Person key;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;
while (j >= 0 && arr[j].age > key.age) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
void setup() {
Serial.begin(9600);
// 创建结构体数组
Person people[] = {
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
{"David", 35},
{"Eve", 28}
};
int n = sizeof(people) / sizeof(people[0]);
// 打印排序前的数组
Serial.println("排序前的数组:");
for (int i = 0; i < n; i++) {
Serial.print(people[i].name);
Serial.print("\t");
Serial.println(people[i].age);
}
// 调用插入排序算法
insertionSort(people, n);
// 打印排序后的数组
Serial.println("排序后的数组:");
for (int i = 0; i < n; i++) {
Serial.print(people[i].name);
Serial.print("\t");
Serial.println(people[i].age);
}
}
void loop() {
// 无需在循环中执行任何操作
}
这个示例中定义了一个Person
结构体,包含姓名和年龄两个字段。然后使用插入排序算法对一个Person
类型的结构体数组进行排序。在setup()
函数中,创建了一个包含5个Person
结构体的数组,并调用insertionSort()
函数进行排序。最后,在串口监视器中打印排序前后的数组。