求!C语言一维数组编程:在一维数组中查找一个指定的值,找到返回其位置序号,未找到返回0。 5

在一个已经排好序的一维数组中,查找一个指定的值,如果找到,返回该元素在数组中的位置序号,否则返回0。... 在一个已经排好序的一维数组中,查找一个指定的值,如果找到,返回该元素在数组中的位置序号,否则返回0。 展开
 我来答
香山雪叶
2014-06-04 · TA获得超过136个赞
知道小有建树答主
回答量:134
采纳率:100%
帮助的人:45.5万
展开全部
给你找一个C语言的折半查找法,解决这种任务的第一算法
http://baike.baidu.com/view/610605.htm?from_id=9796273&type=syn&fromtitle=%E6%8A%98%E5%8D%8A%E6%9F%A5%E6%89%BE&fr=aladdin

C语言数组下标从 0 开始 找不到应该返回-1
C语言代码
intBinSearch(SeqList*R,intn,KeyTypeK)
{
//在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1
intlow=0,high=n-1,mid;//置当前查找区间上、下界的初值
if(R[low].key==K)
returnlow;
if(R[high].key==k)
returnhigh;
while(low<=high)
{
//当前查找区间R[low..high]非空
mid=low+((high-low)/2);
//使用(low+high)/2会有整数溢出的问题
//(问题会出现在当low+high的结果大于表达式结果类型所能表示的最大值时,
//这样,产生溢出后再/2是不会产生正确结果的,而low+((high-low)/2)不存在这个问题
if(R[mid].key==K)
returnmid;//查找成功返回
if(R[mid].key>K)
high=mid-1;//继续在R[low..mid-1]中查找
else
low=mid+1;//继续在R[mid+1..high]中查找
}
if(low>high)
return-1;//当low>high时表示查找区间为空,查找失败
}//BinSeareh

修改了下 适应数组
intBinSearch(int *R,intn,KeyTypeK)
{
//在有序表R[0..n-1]中进行二分查找,成功时返回结点的位置,失败时返回-1
intlow=0,high=n-1,mid;//置当前查找区间上、下界的初值
if(R[low]==K)
returnlow;
if(R[high]==k)
returnhigh;
while(low<=high)
{
//当前查找区间R[low..high]非空
mid=low+((high-low)/2);
//使用(low+high)/2会有整数溢出的问题
//(问题会出现在当low+high的结果大于表达式结果类型所能表示的最大值时,
//这样,产生溢出后再/2是不会产生正确结果的,而low+((high-low)/2)不存在这个问题
if(R[mid]==K)
returnmid;//查找成功返回
if(R[mid]>K)
high=mid-1;//继续在R[low..mid-1]中查找
else
low=mid+1;//继续在R[mid+1..high]中查找
}
if(low>high)
return-1;//当low>high时表示查找区间为空,查找失败
}//BinSeareh
TableDI
2024-07-18 广告
当我们谈到Python与Excel的拆分时,通常指的是使用Python的库来读取Excel文件中的数据,然后根据某种逻辑(如按行、按列、按特定值等)将数据拆分成多个部分或输出到新的Excel文件中。上海悉息信息科技有限公司在处理这类任务时,... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式