鱼C论坛

 找回密码
 立即注册
查看: 2147|回复: 2

请问一下有没有大佬可以解释一下这个程序什么意思,特别是里面sfind怎么理解,急求!

[复制链接]
发表于 2020-6-8 15:12:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*在一个有序序列中,用二分法查找指定元素,若找到返回该值第一次出现的位置,若未找到,
返回0。输入n及n个从小到大排好的有序整数,再输入一个整数x,用二分查找法,查找x是否在
n个整数中出现过,若出现,指出第一次出现的位置;若未出现过,返回0。【输入】第一行:
一个整数,整数的个数n;第二行:n个用空格隔开的有序整数;第三行:一个整数,要找的x;
【输出】一行:一个整数,输出x第一次在所给序列中出现的位置,不存在返回0 */

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int a[100];
int sfind(int a[],int s,int t,int x)
{  if(s>t)return 0;
   int mid=(s+t)/2;
   if(x<a[mid])return sfind(a,s,mid-1,x);
     else if(x>a[mid])return sfind(a,mid+1,t,x);
     else{  if(mid==s)return mid;//找到,返回位置  
                          else if(a[mid-1]==x)return sfind(a,s,mid-1,x);
                                                               else return mid;}}   

int main()
{  int n,i,x,k;
   cin>>n;//输入n
         for(i=1;i<=n;i++)cin>>a[i];//输入n个从小到大排列好的整数
         cin>>x;//输入要查找的整数x
         cout<<sfind(a,1,n,x)<<endl;
         return 0;}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:23:37 | 显示全部楼层
怪不得你看不懂,这人写代码的方式本来就让人恶心
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-8 15:28:37 | 显示全部楼层
老八秘制 发表于 2020-6-8 15:23
怪不得你看不懂,这人写代码的方式本来就让人恶心

考试要考这个题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 06:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表