编写程序统计某班程序设计期末考试成绩,有最多不超过 30 人参加考试,编写程序使用选择排序算法,给班级的成绩进行排序,并在排好序的基础上,使用折半查找,找到某个成绩在数组的位置(C语言)
时间: 2024-03-14 12:43:02 浏览: 50
好的,下面是代码实现(注释中会有详细解释):
c
#include <stdio.h>
#define MAX_SIZE 30
// 选择排序
void selection_sort(int arr[], int) {
for (int i = 0; i n - 1; i++) {
int_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// 交换位置
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
// 折半查找,返回找到元素的下标,未找到返回 -1
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
int main() {
int n;
printf("请输入班级人数(不超过 30):");
scanf("%d", &n);
int arr[MAX_SIZE];
printf("请依次输入每个学生的成绩:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 使用选择排序进行排序
selection_sort(arr, n);
printf("排序后的成绩为:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
int target;
printf("\n请输入要查找的成绩:");
scanf("%d", &target);
// 使用折半查找查找目标成绩
int idx = binary_search(arr, n, target);
if (idx == -1) {
printf("未找到该成绩\n");
} else {
printf("该成绩在数组中的下标为:%d\n", idx);
}
return 0;
}
```
希望可以帮到你!
阅读全文