第六周学习总结

这周主要学习了二分法和一二维前缀这两项.

先说一下二分法,这种思想在高中数学时期,老师讲过大概类似的思想,就比如那些无理数(根号下除不尽的数),就需要去估算他们在那个范围里,这时候就需要使用二分法,就是先找个大概,比如说√2,想知道他的范围,就先找1和2,然后看是在1到1.5之间,还是在1.5到2之间,然后依次类推就能知道他的精确范围了.

在编程中运用的二分法原理是一样的,比如想找这个数在数列中的第几索引,首先要找数列个数的中间数,然后判断这个数是在前半部分还是在后半部分,判断完之后继续在小范围内进行判断,经过不断缩小范围,最终一定能找到那个数在数列中是第几索引.代码如下:

int answer = -1;

int a[10] = {10,20,30,40,50,60,70,80,90,100}

int low = 0,high=10-1; //最大值必须为数组长度-1

int mid =(low+high)/2; //计算出中间值

while(low<=high){

if(set<mid) { //set为需要寻找的数字

high = mid-1;

else if(set>mid){
low = mid+1;    //开始缩小范围

else answer=mid;

if(answer=-1) //此时为数组中不存在需要寻找的数字

cout<<"不存在"<<endl;

else cout<<"该数在此数列中为第"<<mid<<"索引"<<endl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值