剑指Offer之旋转数组中的最小数字(题8)
1/****************************************2>FileName:test.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月23日星期一20时07分13秒6****************************************/78910/*这是典型的类二分查找算法,只要找到分间线,就是其中最下的元素*/1112#include<stdio.h>1314intmin(int*buf,intlength)15{16if(buf==NULL||length<=0)17{18printf("parameteriserror!\n");19return-1;20}2122intleft=0;23intright=length-1;24intmid=0;2526while(right>left)27{28if((right-left)==1)29{30break;31}3233mid=left+(right-left)/2;34if(buf[mid]>=buf[left])35{36left=mid;37}38elseif(buf[mid]<=buf[right])39{40right=mid;41}42}4344returnbuf[right];45}
1/****************************************2>FileName:test.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月23日星期一20时07分13秒6****************************************/78910/*这是典型的类二分查找算法,只要找到分间线,就是其中最下的元素*/1112#include<stdio.h>1314intmin(int*buf,intlength)15{16if(buf==NULL||length<=0)17{18printf("parameteriserror!\n");19return-1;20}2122intleft=0;23intright=length-1;24intmid=0;2526while(right>left)27{28if((right-left)==1)29{30break;31}3233mid=left+(right-left)/2;3435if(buf[right]==buf[left]&&buf[left]==buf[mid])//顺序查找36{37for(inti=left;i<=right;i++)38{39if(buf[left]>buf[i])40{41returnbuf[i];42}43}44}4546if(buf[mid]>=buf[left])47{48left=mid;49}50elseif(buf[mid]<=buf[right])51{52right=mid;53}54}5556returnbuf[right];57}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。