二分法是什么意思,二分法求方程近似解的过程
二分法,顾名思义,把一个序列分成两部分。值得注意的是,序列需要先排序,再搜索。
排序数组int main(){
int nums[10]={4,5,2,10,7,1,8,3,6,9 };
int i,j,temp
//冒泡排序算法:进行n-1轮比较。
for(I=0;I 10-1;i ){
//比较每轮的前n-1-i,也就是已经排序的最后一个I不用比较。
for(j=0;j 10-1-I;j ){
if(nums[j] nums[j 1]){
temp=nums[j];
nums[j]=nums[j 1];
nums[j 1]=temp;
}
}
}
使用二分法寻找元素远比成对比较好。二分法是用下标求整个数组的中值,将中值与查询元素进行比较,定位查询元素所在的中值的一边。在这个循环中,我们知道左下标和右下标是一致的(因为此时中值是自身,下一个循环和这个一样,所以不需要再做一遍)。
# define _ CRT _ SECURE _ NO _ WARNINGS 1
#包含stdio.h
int main()
{
int arr[]={ 1,2,3,4,5,6,7,8,9,10 };
int k=6;//查询的元素
int SZ=sizeof(arr)/sizeof(arr[0]);//计算元素的数量
int left=0;//左下标
int right=SZ-1;//右下标
while(左=右)
{
int mid=(左右)/2;
if (arr[mid] k) {
右=中1;
}
else if (arr[mid] k) {
左=中1;
}
否则{
Printf(找到的元素下标:%d\n ,mid);
打破;//如果找到了,跳出整个循环
}
}
如果(左/右){
Printf(找不到!\ n’);
}
返回0;
}值得注意的是,mid可能被人为计算成十进制数,但在代码中会被四舍五入,arr[mid]是存在的。
猪猪姑娘,
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。