二分查找法在最坏情况下的时间复杂度是O(log(n))
在已排序的数组中查找特定的元素,或者满足条件的第一个元素。
二分查找法原始代码
#include <stdlib.h>
#include <stdio.h>
void bubbleSort(int *A, int n)
{
int i,j,temp;
for (i = 0; i<n-1; i++)//n个数要进行n-1次比较,而不是n次
{
for (j = 0; j<n-i-1; j++)
{
if (A[j] > A[j+1])
{
temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
}
int binarysearch(int *Array, int left, int right, int target)
{
int mid;
while (left<=right)
{
mid = (left + right)/2;
if (target > Array[mid])
{
left = mid + 1;
}
else if (target == Array[mid])
{
return mid;
}
else
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int a[] = {1,98,3,21,50,9};
int m = 1;
bubbleSort(a, 6);
int k = binarysearch(a,0,5,m);
if (k == -1)
{
printf("数组中没有要找的那个数\n");
}
else
{
printf("已找到\n");
}
getchar();
getchar();
}
注意事项一:mid的溢出
注意事项二:常数步的前进
详见http://blog.csdn.net/zhouyelihua/article/details/46665931