使用c实现线性表的查找操作。 顺序查找。要求:顺序表的第0个元素赋值为要查找的关键字key,并从顺序表最后一个元素,依次向前查找。 折半查找。要求:对顺序表中关键字按非递减顺序排列后,使用折半查找算法进行查找。 输入说明: 第1行输入顺序表中关键字的个数n; 第2行依次输入顺序表中各关键字的值; 第3行输入要查找的关键字key。 输出说明 输出比较次数,及查找是否成功。(其中的标点符号为中文全角标点符号) 输入样例1: 6 99 12 47 5 8 69 5 输出样例1: 顺序查找比较3次,查找成功! 折半查找比较2次,查找成功! 输入样例2: 6 99 12 47 5 8 69 43 输出样例2: 顺序查找比较7次,查找失败! 折半查找比较3次,查找失败!
时间: 2024-03-08 16:50:26 浏览: 53
顺序查找的C语言实现:
```c
#include<stdio.h>
int main(){
int n, key, a[100];
scanf("%d", &n); // 输入关键字的个数
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]); // 输入关键字的值
}
scanf("%d", &key); // 输入要查找的关键字
a[0] = key; // 第0个元素赋值为要查找的关键字
int i;
for(i = n; a[i] != key; i--){ // 从顺序表最后一个元素开始查找
printf("顺序查找比较%d次,", i);
if(i == 0){ // 查找失败
printf("查找失败!\n");
return 0;
}
}
printf("顺序查找比较%d次,查找成功!\n", n-i+1); // 查找成功
return 0;
}
```
折半查找的C语言实现:
```c
#include<stdio.h>
int main(){
int n, key, a[100];
scanf("%d", &n); // 输入关键字的个数
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]); // 输入关键字的值
}
scanf("%d", &key); // 输入要查找的关键字
int left = 1, right = n;
int mid, count = 0; // count用于记录比较次数
while(left <= right){
count++;
mid = (left + right) / 2;
if(a[mid] == key){
printf("折半查找比较%d次,查找成功!\n", count);
return 0;
}
else if(a[mid] < key){
left = mid + 1;
}
else{
right = mid - 1;
}
}
printf("折半查找比较%d次,查找失败!\n", count); // 查找失败
return 0;
}
```
阅读全文