C语言编程——折半查找法。要求:在有序的序列中查找给定值,最好是调试过的,谢了

如题所述

#include <stdio.h>
int main()
{
int a[11]={0,1,2,3,4,5,6,7,8,9,10},min=0,max=10,mid,n; //max为数列长度,a[0]作为第一个数组元素
printf("请输入您要查找的数:\n");
scanf("%d",&n);
while(min<=max)
{printf("%d-%d\n",min,max);
mid=(min+max)/2;
if (n>a[mid]) min=mid+1;
else if (n<a[mid]) max=mid-1;
else
{
printf("输入的数在数列的第%d位\n",mid+1);
return 0;
}
}
printf("\n输入的数不在数列中\n");
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-08
int x[N]; //有序,从小到大
int s; //需要查找的那个数
int a,b,m;
a=0;
b=N-1;
if(s<x[0]||s>x[N-1])
printf("No");
for(;b-a<=1;)
{
m=(a+b)/2;
if(s==x[m])
{
printf("Yes the %d",m+1);
break;
}
if(x[a]>x[m])
m=a;
else
m=b;
}本回答被提问者采纳
第2个回答  2011-12-08
int half(char *arr,int arr_number,char X)//小到大排列的数组,X为要查询的字符
{
int head=0,tail=arr_number-1;
int m=(tail-head)/2;
while(arr[m]!=X&&head!=tail)
{
if(arr[m]>X) tail=m;
else head=m;
if(tail-head!=1) m=head+(tail-head)/2;//首尾不相邻
else
{
if(m==head)
{
m=tail;
break;
}
else
{
m=head;
break;
}
}
}
if(arr[m]==X) return (m+1);//找到便返回序号,arr[m]为第m+1个数
else return (arr_number+1);//没找到便返回总数+1
}

C语言编程——折半查找法。要求:在有序的序列中查找给定值,最好是调试...
9,10},min=0,max=10,mid,n; \/\/max为数列长度,a[0]作为第一个数组元素printf("请输入您要查找的数:\\n");scanf("%d",&n);while(min<=max){printf("%d-%d\\n",min,max);mid=(min+max)\/2;if (n>a[mid]) min=mid+1;

c语言编程实现“折半查找”的过程。
折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,...

C语言折半查找法详细代码(假如有10个已排好序的数)
折半查找即二分查找,思想是:在一组有序的数据中查找一个数据,首先将要查找的数据与这组数中间的值比较,如果要查找的数据比它小,则在左半部分中继续查找;若比中间值大,则在右半部分中继续查找,相等的话就表示已找到,直接返回。这样,每次查找都可以将查找范围缩小一半,以此达到O(log N)的...

c语言折半查找法
折半查找法是算法一种,可以被任何计算机语言使用。用C语言自然也可以实现。1、定义:在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,...

c语言的折半查找法
一开始a=0 b=14 接着取索引为int((a+b)\/2 )的元素与你输入的比较 如果比输入的小的话那么设a=int(a+b)\/2 )接着继续取索引为int((a+b)\/2 )的元素与你输入的比较 如果比输入的大的话那么设b=int(a+b)\/2 )继续找下去 如果相等的话就打印并break 不然一直到a=b退出循环...

c语言:编写程序,在有序的数列中查找某数,若该数在此数列中则输出它的...
题目:试编写一个程序完成:有15个数按从下到大的顺序存放在一个数组中.输入一个数,要求折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,输出“不在表。===下面是C代码,其中数组没有设计为录入,而是固定数组=== \/\/输出的序列是从0开始算的,也就是输出的是所在数组的索引...

请写一个折半插入排序算法(最好用C语言写出来,只要求写一个函数)
\/***折半插入排序***\/\/*算法原理:从第二个数开始逐个置入监视哨,使用low,high标签在L[0..i-1]有序区内进行折半查找来确认待排序数的插入位置,然后将该位置到最后一个数全部后移一位,最后腾出该位置,把监视哨里面的数置入该位置。后面的数以此类推进行排序,直到最后一个数比较完毕。*\/#...

C语言中使用函数实现:数据的输入,排序,输出和查找(要求折半查找...
else if(c

c语言数据结构。长度为11的有序表,采用折半查找,在等概率情况下查找成功...
5.一命击中的长度为1 两次击中的长度为2 三次击中的长度为4 四次击中的长度为8 五次击中的长度为16 所以,长度为11的有序表的平均查找次数约为5。

C语言:麻烦给程序加个输入一个职工号,用折半查找法找出改职工的姓名的...
void printstud (struct employee *stud);void savestud (struct employee *stud);void SR(struct employee *stud);struct employee { unsigned unm; \/*这应该用无符号整型吧!*\/ char sex[15];char old[15];char nation[15];} stud[100];int n=0; \/*职工数*\/ void ma...

相似回答