折半查找

  1. int BinarySearch(int len,int* arr,int x)
  2. {
  3. assert(arr);
  4. int begin = arr[0];
  5. int end = len;
  6. while (begin < end)
  7. {
  8. int mid = ((end - begin) >> 2) + begin;
  9. if (arr[mid] < x)
  10. {
  11. begin = mid + 1;
  12. }
  13. else if (arr[mid]>x)
  14. {
  15. end = mid - 1;
  16. }
  17. else
  18. {
  19. return mid;
  20. }
  21. return -1;
  22. }
  23. }