运用C语言实现:可以在键盘中输入一些数字使用冒泡排序对其进行排序,同时使用二分搜索找到想要搜索的数,给出注释
时间: 2024-02-18 10:05:11 浏览: 60
以下是实现代码和注释:
```c
#include <stdio.h>
// 冒泡排序函数
void bubble_sort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换相邻两个数的位置
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 二分搜索函数
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target) {
// 找到目标数,返回下标
return mid;
} else if (arr[mid] < target) {
// 目标数在右半部分,缩小搜索区间
left = mid + 1;
} else {
// 目标数在左半部分,缩小搜索区间
right = mid - 1;
}
}
// 没有找到目标数,返回 -1
return -1;
}
int main() {
int n, i, target, result;
printf("请输入数字个数:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个数字:", n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 对输入的数字进行冒泡排序
bubble_sort(arr, n);
printf("排序后的数字为:");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n请输入要搜索的数字:");
scanf("%d", &target);
// 在排好序的数字中进行二分搜索
result = binary_search(arr, n, target);
if (result == -1) {
printf("没有找到该数字\n");
} else {
printf("该数字在数组中的下标为:%d\n", result);
}
return 0;
}
```
注释中详细解释了冒泡排序和二分搜索的实现过程,代码中使用了数组和函数的相关知识,需要熟练掌握。
阅读全文