用C语言实现对一个有序数组的折半查找

青春须早为,岂能长少年。这篇文章主要讲述用C语言实现对一个有序数组的折半查找相关的知识,希望能为你提供帮助。
编程思路:
1.首先对于查找一个有序数组arr[]而言,查找数为x,我们需要先定义三个变量left、right和mid,分别代表数组的第一个元素、最后元素下标和中间元素下标。
2.然后设置一个while循环,条件为left小于等于right时执行下面语句。
3.设置三个if判断语句:
(1)if(arr[mid]> x)时:right = mid -1; //说明中间元素比所要查找的数大,x应该在左边,则令右边的下标right等于mid-1;
(2)if(arr[mid]< x)时:left = mid +1; //说明所要查找的数在右边,令左边小标left=mid+1;
(3)if(arr[mid==x)时,表明找到了这个数,break语句结束循环。


具体实现代码如下:
#define _CRT_SECURE_NO_WARNINGS 1 //这一条语句是因为我是在VS上运行的,为了是sizeof()函数顺利运行。
#include< stdio.h>
int main()

int arr[] =1,3,4,6,8,9,11,21 ;
intsize = sizeof(arr) / sizeof(arr[0]);
int x;
int i;
printf("请输入查找的数: ");
scanf("%d", & x);
printf("查找的这个数是%d\\n", x);
//二分查找
int left = 0;
int right = size-1;
while (left < = right)
int mid = (left + right) / 2;
if ( arr[mid]> x)
right= mid-1;

if ( arr[mid] < x)

left= mid+1;

if (arr[mid] ==x )
printf("找到了这个数,它是第%d个数",mid+1);
break;

//printf("mid = %d", mid);

if (left > right)
printf("抱歉,没有这个数");

return 0;

【用C语言实现对一个有序数组的折半查找】运行结果如下图:




    推荐阅读