C语言用折半查找对用冒泡法对用冒泡法或选择法对定义一个int类型的一维数组,数组长度为10。用scanf函数完成数组的初始化,并输出该数组中的数组进行升序排序中的数组进行升序排序中已排序的数组进行查找,要查找的内容从键盘输入。
时间: 2024-12-05 20:15:14 浏览: 26
C语言中,你可以使用折半查找(Binary Search)算法对一个已经按升序排列的整型一维数组进行查找,而不是冒泡法或选择法。这是因为冒泡法和选择法主要用于原始无序数组的排序,而折半查找则是在有序数组中高效搜索。
首先,你需要定义一个大小为10的`int`数组并使用`scanf`函数输入元素:
```c
#include <stdio.h>
#define ARRAY_SIZE 10
int main() {
int arr[ARRAY_SIZE];
// 初始化数组
for (int i = 0; i < ARRAY_SIZE; i++) {
printf("请输入第 %d 个元素: ", i + 1);
scanf("%d", &arr[i]);
}
// 冒泡法排序(这里只是为了演示,实际应用中可以省略)
for (int i = 0; i < ARRAY_SIZE - 1; i++) {
for (int j = 0; j < ARRAY_SIZE - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 折半查找
int target;
printf("你想查找的数字: ");
scanf("%d", &target);
int low = 0, high = ARRAY_SIZE - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (arr[mid] == target) {
printf("找到目标值 %d, 它在索引 %d\n", target, mid);
break;
} else if (arr[mid] < target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
// 如果没找到,说明不在数组中
if (low > high) {
printf("未找到目标值 %d\n", target);
}
return 0;
}
```
阅读全文