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

Posted 系白杨呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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 ;
int size = 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语言实现对一个有序数组的折半查找_C语言实现


以上是关于用C语言实现对一个有序数组的折半查找的主要内容,如果未能解决你的问题,请参考以下文章

C语言二分查找算法,折半查找算法

c语言编程实现“折半查找”的过程。

C语言折半查找法详细代码(假如有10个已排好序的数)

二分查找(折半查找)算法详解(C语言实现)

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

折半查找(C语言)