有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”——C语言
程序员文章站
2024-01-30 23:31:10
...
1 概述
有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”
2 解法
//C程序设计第五版(谭浩强)
//章节:第六章 利用数组处理批量数据
//题号:6.9
//题目:用折半查找法找出该数是第几个元素的值
#include <stdio.h>
int main(){
int x[100],n,i,j,temp,m,mid,low,high,p=0;
printf("您的数组长度是:");
scanf("%d", &n);
printf("请依次输入您的数组元素:");
for(i=0;i<n;i++){
scanf("%d", &x[i]);
}
printf("您的数组为:\n");
for(i=0;i<n;i++){
printf("%5d", x[i]);
}
printf("\n数组降序排列后为:\n");
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
if(x[j]<x[j+1]){
temp = x[j];
x[j] = x[j+1];
x[j+1] = temp;
}
}
}
for(i=0;i<n;i++){
printf("%5d", x[i]);
}
printf("\n请输入您要寻找的数:");
scanf("%d", &m);
low = 0;
high = n-1;
while(low<=high){
mid = (low+high)/2;
if(x[mid] == m){
p = 1;
printf("该数在数组第%d位!", mid);
break;
}
else if(x[mid] > m){
low = mid+1;
}
else{
high = mid-1;
}
}
if(p==0){
printf("该数不在数组中!");
}
return 0;
}
上一篇: 计算10个整数中正数个数,正数之和,正数的平均值。
下一篇: 微机原理--8种寻址方式