2、陷阱,如果你想到这点后,就觉得题目很简单,直接把二分查找法套上去,那就错了,注意题目要求是第一次出现的位置。
二分查找法并不能保证这一点,我们可以对二分查找法做一些修改,代码如下:
int myBinarySearch(int num[],int len,int key) { int low=0; int hight=len-1; int mid=0; int switchFind=0; int index=0; int fin=0; while (low<=hight) { mid=(hight+low)/2; if (num[mid]==key) { switchFind=1; break; // return mid+1; } else if (num[mid]>key) { hight=mid-1; } else if (num[mid]<key) { low=mid+1; } } while (switchFind) { mid--; if (num[0]==key) { return 1; } else if (num[mid]!=key) { index=mid; return index+2; } } return -1; }
百田游戏2014笔试题——找到有序序列中某个值第一次出现的位置,并打印,布布扣,bubuko.com
百田游戏2014笔试题——找到有序序列中某个值第一次出现的位置,并打印
原文:http://blog.csdn.net/eastlhu/article/details/22715431