在小于O(log(n))运行时间的有序数组中搜索

时间:2012-04-27 11:28:44

标签: c algorithm search binary-search

我正在使用二进制搜索在O(log(n))时间内从排序的数字数组中搜索数字。我的C搜索功能如下:

search(int array[],int size,int search)
 {
 int first=0;
 int last=size-1;
 int middle = (first+last)/2;
   while( first <= last )
   {
      if ( array[middle] < search )
         first = middle + 1;    
      else if ( array[middle] == search ) 
      {
         printf("%d found at location %d.\n", search, middle+1);
         break;
      }
      else
         last = middle - 1;

      middle = (first + last)/2;
   }
   if ( first > last )
      printf("Not found! %d is not present in the list.\n", search);
}

此处size是数组的大小,search是要搜索的数字。 有没有办法以比上述程序更简单的方式执行搜索?

1 个答案:

答案 0 :(得分:-1)

是的,使用哈希表。在一般情况下它应该更快。