二分查找
来源:互联网 发布:js求数组最大值 编辑:程序博客网 时间:2024/05/29 15:28
二分查找也就是折半查找。。
在使用调用函数时,如果函数在前面,则直接调用;
若函数在主函数后面,则要先声明要调用的函数;
#include<stdio.h>int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};int key=5;int left=0;int right=sizeof(arr)/sizeof(arr[0])-1;while(left<=right){int mid=left+(right-left)/2;if(arr[mid]<key){left=mid+1;}else if(arr[mid]>key){right=mid-1;}else{printf("该数字下标已找到:%d",mid);break;}}if(left>right){printf("找不到该数字,请重新输入");}return 0;}#include<stdio.h>binary_search();int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};int key=10;int sz=sizeof(arr)/sizeof(arr[0])-1;int find = binary_search(arr,key,sz);//find收到函数的返回值,若返回mid,则find就等于mid;负责返回-1;if (find==-1){printf("找不到该数字,请重新输入.");}else{printf("该数字下标已找到:%d",find);}return 0;}int binary_search(int arr[],int key,int sz)//int arr[]其实是该数组的首地址,在32根地址线的计算机中,一个字节8个比特位,所以一个地址占4个字节;在64位地址线的计算机中,则是8个字节;{//所以要定义一个变量获取数组长度;int left=0;int right=sz;while(left<=right){int mid=left+(right-left)/2;if(arr[mid]<key){left=mid+1;}else if(arr[mid]>key){right=mid-1;}else{return mid;}}return -1;//return 这里不需要再判断;如果找不到就自动跳转到这里。}
阅读全文
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- saltstack源码编译安装lnmp
- java中final关键字声明的变量
- angular追加元素和搜索
- 在win10下安装ubuntu双系统总结
- InputStream,InputStreamReader和Reader之间的区别与关系
- 二分查找
- 腾讯云使用
- sql case when 简单用法
- java防sql注入方法小结
- PAT甲级 1025. PAT Ranking (25)
- C#与.net平台(一)
- leetcode 34. Search for a Range
- 洛谷P2587 [ZJOI2008]泡泡堂(贪心)
- 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)