
C语言问题!急需!请各位高手帮忙!
有15个数按由大到小顺序存放一个数组,输一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。请各位C语言高手多多指教!小弟不胜...
有15个数按由大到小顺序存放一个数组,输一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
请各位C语言高手多多指教!小弟不胜感激!~~~~~~~ 展开
请各位C语言高手多多指教!小弟不胜感激!~~~~~~~ 展开
展开全部
#include <stdio.h>
void search(int a[],int k);
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
search(a,8);
}
void search(int a[],int k)
{
int low,hig,mid;
low=0;hig=14;
mid=(low+hig)/2;
while ((a[mid]!=k)&&low<=hig)
{
if(a[mid]<k)
hig=mid-1;
else
low=mid+1;
mid=(low+hig)/2;
}
if(low>hig)
printf("Not found!\n");
else
printf("the number is the %d\n",mid);
}
void search(int a[],int k);
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
search(a,8);
}
void search(int a[],int k)
{
int low,hig,mid;
low=0;hig=14;
mid=(low+hig)/2;
while ((a[mid]!=k)&&low<=hig)
{
if(a[mid]<k)
hig=mid-1;
else
low=mid+1;
mid=(low+hig)/2;
}
if(low>hig)
printf("Not found!\n");
else
printf("the number is the %d\n",mid);
}
展开全部
#include <stdio.h>
void main()
{
int data[15];
int i, j, k;
int n;
for (i = 0; i < 15; i++)
{
scanf("%d", &n);
for (j = 0; j < i; j++)
{
if (n > data[j])
{
for (k = i; k > j; k--)
{
data[k] = data[k - 1];
}
break;
}
}
data[j] = n;
}
scanf ("%d", &n);
int b, e, m;
int index = -1;
for (b = 0, e = 14; e - b > 1; )
{
m = (b + e) / 2;
if (n == data[m])
{
index = m;
break;
} else if (n > data[m])
{
e = m;
} else
{
b = m;
}
}
if (n == data[b])
{
index = b;
} else if (n == data[e])
{
index = e;
}
if (index == -1)
{
printf("无此数");
} else
{
printf("%d", index);
}
}
void main()
{
int data[15];
int i, j, k;
int n;
for (i = 0; i < 15; i++)
{
scanf("%d", &n);
for (j = 0; j < i; j++)
{
if (n > data[j])
{
for (k = i; k > j; k--)
{
data[k] = data[k - 1];
}
break;
}
}
data[j] = n;
}
scanf ("%d", &n);
int b, e, m;
int index = -1;
for (b = 0, e = 14; e - b > 1; )
{
m = (b + e) / 2;
if (n == data[m])
{
index = m;
break;
} else if (n > data[m])
{
e = m;
} else
{
b = m;
}
}
if (n == data[b])
{
index = b;
} else if (n == data[e])
{
index = e;
}
if (index == -1)
{
printf("无此数");
} else
{
printf("%d", index);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该将2楼的输入排序部分和1楼的折半查找部分组合起来,这个程序我认为是最佳的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询