在一个二维数组中查找一个整数,因为二维数组是有序的,想对折半查找方法与常规遍历方法的效率做比较,但是折半查找结果是运行超时,检查了几遍觉得代码没问题😂大佬帮看看怎么回事。代码如下:
bool Find(int target, const vector<vector<int> > & array) {
int rowmid = 0;
int rowmax = array.size() - 1;
int rowmin = 0;
int mid = 0;
int hight = 0;
int low = 0;
while(rowmin <= rowmax){
rowmid = (rowmin + rowmax) / 2;
hight = array.at(rowmid).size() - 1;
low = 0;
while(low <= hight){
mid = (hight + low)/2;
if (target == array.at(rowmid).at(mid)){
return true;
}
if (target > array.at(rowmid).at(mid)) {
low = mid + 1;
}
if (target < array.at(rowmid).at(mid)){
hight = mid - 1;
}
}
if ( hight > 0) {
rowmin = rowmid + 1;
}
else if (hight < 0){
rowmax = rowmid - 1;
}
}
return false;
}
全部评论
(3) 回帖