您的位置首页百科问答

C语言查找算法 C语言二分查找算法的实现

C语言查找算法 C语言二分查找算法的实现

的有关信息介绍如下:

C语言查找算法 C语言二分查找算法的实现

我就在这里用C语言讲解“查找算法”—— 二分查找(Binary Search);如果你有更好的建议,或者有疑惑,可以给我留言。如果你想了解其它算法,如冒泡排序等,在大学以及工作中必须掌握的算法,那么请关注或者收藏我,我将继续更新其它算法。

(图片取自互联网,如有侵权,请于我联系)

线性查找使用的条件:要求数据表已经排好序。

线性查找的工作原理:先将表的中间位置记录的关键字与查找关键字比较 ;

(如果两者相等,则查找成功)

(否则将表分成前、后两个子表,根据比较结果,决定查找哪个子表)

具体实现过程:第一步 输入数据

你可以直接将你所需要的数据存入数组,如int a = {1,2,3,4,5,6,7,8,9,10};

也可以通过循环输入

for(i = 0 ; i< n ;i++)

{

scanf("%d",&a[i]);

}

来实现数据输入数组;

具体实现过程:第二步 写循环

如果查找的某一次循环没有找到匹配的数据,那么就要将(下标最大值+1)或者(下标最小值-1)赋值给中间值mid ;

当下标最小值超过最大值时候,循环结束,及(low > high);

while(low <= high)是循环成立的条件。

具体实现过程:第二步 判断

如果循环找到了与你查找匹配的数据,那么就结束循环;

if(x == a[mid] )

{

printf("找到数字“6”。");

break;

}

注意:如果要查找你数据相同的个数,就用continue;

即:

if(x == a[mid] )

{

printf("找到数字“6”。");

counter++;//记录个数

continue;

}

C语言代码实现:

#include

int main()

{

int a = {1,2,3,4,5,6,7,8,9,10};

printf(" 查找数字“6”。\n");

int low = 1;

int high = 10;//数组的最大下标n-1

int x = 6; //需要查找的数字

int mid ;

while(low <= high)

{

mid = (low + high)/2 ;//下标的一半,int类型除法取整。

if(x < a[mid])

{

high = mid +1;

}

if(x == a[mid] )

{

printf("找到数字“6”。");

break;

}

else

{

low = mid -1 ;

}

}

return 0;

}

运行程序;成功截图如下;

二分查找的时间复杂度是O(log(n)),最坏情况下的时间复杂度是O(n)。