二分查找算法
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列。
1 #include<stdio.h> 2 #define find_num 1023 //定义要查找的数 3 int main(void) 4 { 5 int arry[1024]; 6 for (int i = 0; i < 1024; i++) 7 { 8 arry[i] = i;//二分查找要求必须是有序排列的 9 } 10 int up=arry[0], down=arry[1023], mid; 11 int find_flag = 0;//定义是否查找到的标志位 12 while (up <= down)//如果上 小于等于 下(注意必须要有等于,不然你可以试试查找1023),就查找 13 { 14 mid = (up + down) / 2; 15 printf("up=%d mid=%d down=%d\n", arry[up], arry[mid], arry[down]); 16 if (arry[mid] == find_num) 17 { 18 printf("找到了\n"); 19 find_flag = 1; 20 break;//跳出循环 21 } 22 else if (arry[mid] < find_num) 23 { 24 up = mid + 1; 25 } 26 else 27 { 28 down= mid - 1; 29 } 30 } 31 if (find_flag == 0) 32 { 33 printf("没有查找到这个数\n"); 34 } 35 return 0; 36 }
在最坏的情况下,查找10次,2^10=1024;
Analyze:
欢迎加入作者的小圈子
扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并获取更多隐藏干货,QQ交流群:816747642 微信公众号:Crystal软件学堂
作者:Crystal软件学堂 bilibili视频教程地址:https://space.bilibili.com/5782182 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。 如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。 文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。 |