关于二分法查找的一段c语言程序,高手帮看下什么意思,输入是什么输出是什么?

关于二分法查找的一段c语言程序,高手帮看下什么意思,输入是什么输出是什么?,第1张

1.利用随机函数产生1000个随机数

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))

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12365981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存