描述
编写程:编写函数对n个整数从大到小排序,函数有2个参数,分别为一个整形指针和整数n。排序完成后输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。
样例输入
输入共有3行:
第1行为n,第2行为n个整数,第3行为要查找的整数;
样例输出
输出你要查找的整数在排好序的数组中是第几个元素。如果该数不在数组中,则输出“wucishu!”。如果输入的数在数组中有多个,则输出此数在排好序后的数组中第一次出现的位置。
用例输入
5
8 6 4 5 7
7
用例输出
2
解答
#include<stdio.h>
#define N 100
voidsort(int *p,int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if(p[i]<p[j])
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
}
}
void find(int *p,int n,int m)
{
int low=0,high=n-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(p[mid]==m)
{
printf("%d\n",mid+1);
break;
}
else
if(p[mid]>m)
{
low=mid+1;
}
else
{
high=mid-1;
}
}
if(low>high)
{
printf("wucishu\n");
}
}
int main()
{
int a[N],i,n,m;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,n);
scanf("%d",&m);
find(a,n,m);
return0;
}这道题目比较复杂,需要运用到指针的知识点
该程序使用C语言编写,功能包括对一个整数数组进行升序排序,然后使用折半查找方法在排序后的数组中寻找特定数值的位置。如果数值存在,输出其位置;否则输出错误信息。
898

被折叠的 条评论
为什么被折叠?



