大佬救命,速解!!!

有15个数按由大到小顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值,如果该数不在数组中,则输出“无此数”

#include<iostream>
#include<algorithm>
using namespace std;
#include <stdio.h>

int main(){
    int x[15] = {99, 97, 87, 76, 65, 63, 59, 58, 51, 43, 32, 31, 28, 15, 6};
	int n,i,j,temp,m,mid,low,high,p=0;

	printf("请输入您要寻找的数:");
	scanf("%d", &m);
	low = 0;
	high = 15-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;
}

 

#include "stdio.h"
void main()
{

    int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
    int left,right,mid;
    int num,cnt=0;
    printf("请输入你要查找的数据:");
    scanf("%d",&num);
    left = 0;
    right= 14;
    while(left<=right){
    	//计算查找次数
    	cnt++;
    	//获取中间位置元素的下标
    	mid = (left+right)/2;
    	if(num<a[mid]){
    		//往右找
    		left=mid+1;
    	}else if(num>a[mid]){
    		//往左找
    		right=mid-1;
    	}else{
    		//找到了
    		printf("在第%d个位置找到了数据,共查找%d次\n",mid+1,cnt);
    		break;
    	}
    };
    if(left>right){
    	printf("你要查找的数据不存在\n");	
    }
}

 

建议你百度一下二分法查找算法的思路,自己理解了写一下

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632