c语言程序二进制代码,二进制搜索/查找程序(C语言)

本文介绍了一个使用C语言实现的二进制搜索算法。该算法在一个预定义的有序整数数组中查找指定元素的位置,并记录了搜索过程中的比较次数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二进制搜索/查找程序(C语言),如下代码所示:

#include

#define MAX 20

// array of items on which linear search will be conducted.

int intArray[MAX] = {1,2,3,4,6,7,9,11,12,14,15,16,17,19,33,34,43,45,55,66};

void printline(int count){

int i;

for(i = 0;i

printf("=");

}

printf("=\n");

}

int find(int data){

int lowerBound = 0;

int upperBound = MAX -1;

int midPoint = -1;

int comparisons = 0;

int index = -1;

while(lowerBound <= upperBound){

printf("Comparison %d\n" , (comparisons +1) ) ;

printf("lowerBound : %d, intArray[%d] = %d\n", lowerBound,lowerBound,intArray[lowerBound]);

printf("upperBound : %d, intArray[%d] = %d\n", upperBound,upperBound,intArray[upperBound]);

comparisons++;

// compute the mid point

midPoint = (lowerBound + upperBound) / 2;

// data found

if(intArray[midPoint] == data){

index = midPoint;

break;

}

else {

// if data is larger

if(intArray[midPoint] < data){

// data is in upper half

lowerBound = midPoint + 1;

}

// data is smaller

else{

// data is in lower half

upperBound = midPoint -1;

}

}

}

printf("Total comparisons made: %d" , comparisons);

return index;

}

void display(){

int i;

printf("[");

// navigate through all items

for(i = 0;i

printf("%d ",intArray[i]);

}

printf("]\n");

}

main(){

printf("Input Array: ");

display();

printline(50);

//find location of 1

int location = find(55);

// if element was found

if(location != -1)

printf("\nElement found at location: %d" ,(location+1));

else

printf("\nElement not found.");

}

如果我们编译并运行上述程序,那么这将产生以下结果 –

Input Array: [1 2 3 4 6 7 9 11 12 14 15 16 17 19 33 34 43 45 55 66 ]

==================================================

Comparison 1

lowerBound : 0, intArray[0] = 1

upperBound : 19, intArray[19] = 66

Comparison 2

lowerBound : 10, intArray[10] = 15

upperBound : 19, intArray[19] = 66

Comparison 3

lowerBound : 15, intArray[15] = 34

upperBound : 19, intArray[19] = 66

Comparison 4

lowerBound : 18, intArray[18] = 55

upperBound : 19, intArray[19] = 66

Total comparisons made: 4

Element found at location: 19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值