for(i=0i<1000++i) { a[i] = rand()}
//如果要控制1-2000的话,将a[i] = rand()改成a[i] = rand() % 2000
2.然后调用子函数xuanzhe(),其实就是利用选择排序法,对这1000个数野袜进行升序排序
3.接着输入你要输入查找的数
scanf("%d", &x)
楼主可以在此句前添加几句,这样结构会更加清晰
for (i=0i<1000i++)
{
printf("%5d", a[i])
if ((i + 1) % 10 == 0) //控制换行,每行10个数
{
printf("\n")
}
} //将产生1000个随机数每行10个打印出来
printf("请输入所要查找数:"塌前)
4.首先线性查找(即一个挨一个查找),看你输入的数在这1000个随机数中出现几次并记录位置
for (i=0i<1000++i)
{
while (x == a[i])
{
printf("找到X=%d, a[%d]\n", x, i)
find1 = 1
break
}
}
if (find1 == 0)
{
printf("没有你要找的数\n")
}
5.接着就是二颂衫激分法查找
while (!find2 &&left <right)
{
mid = (left + right) / 2
if (x == a[mid])
{
find2=1
}
else if (x <a[mid])
{
right = mid - 1
}
else
{
left = mid + 1
}
}
if (find2 == 1)
{
printf("找到x=%d ,a[%d]\n", x, mid)
}
else
{
printf("没有你要找的数\n")
}
其中的 find1 和 find2 主要用于标记(控制输出函数printf),即(标记变量)
此代码主要是比较 《 线性查找》 与 《 折半查找》 的优缺点
如果对你有所帮助,请记得采纳最佳答案,谢谢!
#include <stdio.h>int binsearch(int x,int v[ ],int n)
{
int low,high,mid
low=0
high=n-1
if(x==0)
return 0
while(low<=high)
{
mid=int((low+high)/2)
if(x<v[mid])
high=mid-1//这里改芹腊迹了,局仿就对了
else if(x>v[mid])
low=mid+1
else
return mid
}
return -1
}
main()
{ int a[10]
int i
int find
for(i=0i<10i++)
a[i]=i
printf("intput find\n")
scanf("嫌并%d",&find)
printf("%d",binsearch(find,a,10))
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)