1.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无

问题描述:

1.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入.
程序提示:
用循环语句输入15个数
调用排序算法对其进行排序
输出排序后的15个数
2个回答 分类:综合 2014-10-26

问题解答:

我来补答
等会就给你发答案 5分钟内
再问: 嗯 要的 非常感谢 !嗯 是说排序前原数组中的位置哈 谢谢
再答: #include<stdio.h>
main()
{
int i,j,n,a[15],t,l=0,h=14,m,f=1;
printf("input 15 numbers\n");
for(i=0;i<15;i++)
scanf("%d",&a[i]);
for(i=0;i<14;i++)
{
for(j=0;j<14-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("the number after sorting\n");
for(i=0;i<15;i++)
printf("%d ",a[i]); 
printf("input your number");
scanf("%d",&n);
while(l<=h&&f)
{
m=(l+h)/2;
if(a[m]==n)
f=0;
else if(a[m]<n)
l=m+1;
else
h=m-1;
}
if(!f)
printf("the [%d] is%d",m,a[m]);
else
printf("can't find");
}是原位置啊 那等等 先发刚刚做的。。
再问: 嗯 但是 先要排序 先通过排序 从排序位置中找到这个数在指向原数组的位置 谢谢
再答: #include<stdio.h>
main()
{
int i,j,n,a[15],b[15],t,l=0,h=14,m,f=1;
printf("input 15 numbers\n");
for(i=0;i<15;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
for(i=0;i<14;i++)
{
for(j=0;j<14-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
printf("the number after sorting\n");
for(i=0;i<15;i++)
printf("%d ",a[i]); 
printf("\ninput your number");
scanf("%d",&n);
while(l<=h&&f)
{
m=(l+h)/2;
if(a[m]==n)
f=0;
else if(a[m]<n)
l=m+1;
else
h=m-1;
}
for(i=0;i<15;i++)
{
if(b[i]==a[m])
break;
}
if(!f)
printf("the [%d] is%d",i,a[m]);
else
printf("can't find");
}您好,很高兴为您解答,流星不死为您答疑解惑如果本题还有不懂的地方请追问,望采纳我的回答。祝楼主学习进步。上面的代码可以直接复制到编译器里,带换行。
 
 
展开全文阅读

补充回答:

排序后,输入一个整数,用“折半法”查找该数是否在原数组中。有则输出下标;无则输出“ No find! ” (SEARCH) 4.排序后,输入一个整数,插入数组中(不改变原顺序) (INSERT)
网友(58.47.134.*) 2019-11-17

剩余:2000
下一页:奇偶性的应用。