网站首页 > 文章中心 > 其它

c语言折中查找函数运用

作者:小编 更新时间:2023-09-18 17:39:39 浏览量:11人看过

帮我写下C语言折中查找的主函数

主函数:

main()

{

RecType *tmp=new RecType[N];

for(int i=0;iN;i◆◆)

tmp[i].key=i;

SSTable sst;

sst.len=N;

sst.list=tmp;

}

还要写一个比较函数在外边:

int cmp(KeyDT a,KeyDT b)

return a-b;

然后就可以用了!

c语言的折中查找法的算法

#include stdio.h

void main(void)

int a[N];

int i,n,num;

int top,bottom,mid;

int flag=1; //如果在表列中找到数字,则值为1,否则为0

int loc=-1;//要查找的数在表列中的位置,如果loca=-1表示表列中没有这个数;如果有这个数,则它的值为所在的位置

scanf("%d",n);

printf("你输入的数不正确,请重新输入.\n");

printf("请你输入一个整数 a[1]:");

scanf("%d",a[1]);

while(i=n) //输入从小到大的表列

printf("请你输入一个整数 a[%d]:",i);

scanf("%d",a[i]);

if(a[i] a[i-1])

i◆◆;

else

printf("你输入的数不满足要求,请重新输入.\n");

//输出表列

printf("\n输出表列\n");

for(i=1; i=n; i◆◆)

printf("\n");

printf("请你输入要查找的数:");

scanf("%d",num);

flag=1; //假设输入的数在表列中

top=n;

bottom=1;

while(flag)

printf("top=%d, bottom=%d, mid=%d, a[%d]=%d\n",top,bottom,mid,mid,a[mid]);

if( (numa[top]) || (numa[bottom]) ) //输入的数 numa[top] 或者 numa[bottom],肯定num不在这个表列中

loc=-1;

flag=0;

else if(a[mid]==num) //如果num 等于找到的数

loc=mid;

break;

else if(a[mid]num) //若 a[mid]num,则num 一定在 a[bottom]和a[mid-1]范围之内

top=mid-1;

else if(a[mid]num) //若 a[mid]num,则num 一定在 a[mid◆1]和a[top]范围之内

bottom=mid◆1;

if(loc==-1)

printf("%d 这个数在表列中没有找到.\n",num);

printf("折半查找结束:");

c语言中的折半查找法是什么原理?

刚开始的时候数组时排好顺序的:从小到大,或者从大到小.然后将这个数组折中,用中间的这个数和要查找的数比较大小,(例如:如果我从小到大,我将数组这种后,用中间的数和要查找的数比较,如果小,则那个要查找的数绝对在中间靠左的范围里,如果大,则那个要查找的数绝对在中间靠右的范围里,然后同理,慢慢慢慢缩小范围,知道查找到为止)

C语言查找的用法

#include?stdio.h

#include?stdlib.h

#include?time.h

void?Sort(int?a[],int?n)?{

int?i,j,k,t;

for(i?=?0;?i?n?-?1;?◆◆i)?{

k?=?i;

for(j?=?i?◆?1;?j?n;?◆◆j)?{

if(a[k]?a[j])?k?=?j;

if(i?!=?k)?{

t?=?a[k];

a[k]?=?a[i];

a[i]?=?t;

int?Find(int?a[],int?n,int?x)?{

int?low?=?0,high?=?n?-?1,mid;

while(low?=?high)?{

if(x?==?a[mid])?return?mid;

else?if(x?a[mid])?low?=?mid?◆?1;

else?high?=?mid?-?1;

return?-1;

void?Show(int?a[],int?n)?{

int?i;

for(i?=?0;?i?n;?◆◆i)?{

printf("%d?",a[i]);

int?main()?{

srand((unsigned)time(NULL));

for(i?=?0;?i?N;?◆◆i)?

a[i]?=?rand()%N;?//?每个数都在1?--?100之间?

Show(a,N);

Sort(a,N);

x?=?rand()0?◆?1;

res?=?Find(a,N,x);

if(res?=?0)?printf("数值%d的下标为%d.\n",a[res],res);

else?printf("数列中没有找到数值%d.\n",x);

return?0;

c语言编程实现"折半查找"的过程.

//参考代码如下:

int main()

int i, j, n, k=0, isFound=0;

printf("请输出一个整数:\n");

scanf("%d", n);

if(i == 0) k◆◆; //i==0 即折半到无可再折时,仍有最后一次比较,故以k做计数

//若未相等,计算下一循环指针的位置

if(nnum[j])

j = j ◆ (i ◆ 1);

else if(nnum[j])

j = j - (i ◆ 1);

isFound = 1;

break; //若找到相等数,标记已找到并退出循环

//输出结果

if(isFound)

printf("该数是数组中第%d个元素的值\n", j);

printf("查无此数!\n");

return 0;

以上就是土嘎嘎小编为大家整理的c语言折中查找函数运用相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章