1 回答
TA贡献3条经验 获得超3个赞
数字的排序直接到网上搜索“C语言冒泡法排序”,网上有图文详解
折半法在数组中查找某一数值,然后返回下标,可以参考我下面的程序。
/*核心思想是把输入的数字和数组的中间数做对比,如果x大于数组的中间数,那就改变下标为中间数下标;
如果x小于数组的中间数,那就改变上标为中间数下标; 如果x于中间数相等,就返回下标; 如果找不到x,返回-1*/
#include<stdio.h>
#define M 30
int search(int v[],int x);
int main()
{
int x,i,n;
int v[M];
v[0]=0;
for(i=0;i<M;i++) //这里我按大小顺序给数组赋值,所以我没有排序
{
v[i+1]=v[i]+1;
}
printf("please enter a x\n");
scanf("%d",&x);
n=search(v,x);
if(n==-1)printf("can not find\n");
else printf("下标是%d\n",n);
return 0;
}
int search(int v[],int x) //这个函数是用折半法在数组中找数字x
{
int mid; //中值
int low=0; //下限
int high=M-1; //上限
while(low<=high)
{
mid=(low+high)/2;
if(x>v[mid])
low=mid+1;
else if(x<v[mid])
high=mid-1;
else return mid;
}
return -1;
}
- 1 回答
- 0 关注
- 2108 浏览
添加回答
举报