博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二分查找的扩展
阅读量:6853 次
发布时间:2019-06-26

本文共 1031 字,大约阅读时间需要 3 分钟。

hot3.png

好久没有更新了。昨天晚上宿舍有同学,说到去ama**面试。面试官先让他写了个二分。。。

偶了以后,又让他进行扩展,问了这么一个问题。

说是如果要查找的数组不是有序的,是一个升序的数组经过偏转得来的。比如原数组为(1,2,3,4,5,6)偏转后的数组为(5,6,1,2,3,4)。然后让用扩展的二分法来进行查找。要求时间复杂度尽量低。。。

我有印象这道题目是见过的。无非就是还是用二分的思想,然后再边界的设置时,需要判断更多的边界条件而已。

但说完之后就熄灯了。今天中午闲来无事,就弄了下。代码不是自己写的,直接在网上找的。。。贴上来吧,算是一个记录:

贴上代码:http://blog.csdn.net/insistgogo/article/details/7770785

#include 
using namespace std;int BinarySearch(int* arr,int len,int key){ int low = 0; int high = len - 1; int mid = 0; while(low <= high) { mid = low + ((high - low) >> 1); if (arr[mid] == key) { return mid; } if (arr[low] <= arr[mid] )//以mid为界,mid左边为增序,mid右边降序 { if (arr[low]<= key && key < arr[mid])//普通的折半 { high = mid - 1; } else { low = mid + 1; } } else //以mid为界,mid左边为降序(逆序),mid右边增序 { if (arr[mid] < key && arr[high] >= key)//在右边,为普通的折半 { low = mid + 1; } else //在mid左边 { high = mid - 1; } } } return -1;}int main(){ int arr1[8] = {6,7,8,9,1,2,4,5}; cout<
<

转载于:https://my.oschina.net/dapengking/blog/115391

你可能感兴趣的文章
Google-Authenticator
查看>>
Android开发指南(37) —— Data Backup
查看>>
【VLC-Android】LibVLC API简介(相当于VLC的MediaPlayer)
查看>>
分享一个收集到的文件和目录操作类FileSystemObject
查看>>
团队建设的小技巧
查看>>
laravel 基础知识总结
查看>>
第八次会
查看>>
利用脚本打包的动态库 在打包发布时出现得问题解析 ERROR ITMS-90362等
查看>>
Tomcat安全配置规范
查看>>
Configure Dynamics 365 and Azure Service Bus Integration (using OneWay relay and listener)
查看>>
必须掌握的30种SQL语句优化
查看>>
day14-css边框以及其他常用样式
查看>>
还原数据库 提示数据在访问中,无法独占访问
查看>>
【其他】Xshell秘钥方式登陆服务器
查看>>
Codeforces 405C
查看>>
Tomcat之catalina.out日志分割
查看>>
Ubuntu下安装Matplotlib和basemap
查看>>
Fedora17 64bit 安装ORACLE 11gR2
查看>>
[转]以安装桌面体验功能为例来探索windows2012服务器管理器的新变化
查看>>
php 发送POST 请求
查看>>