matlab如何用二分查找法,数据结构&算法 二分查找

#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 < count-1;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;

midPoint = lowerBound + (upperBound - lowerBound) / 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 < MAX;i++) {

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

}

printf("]\n");

}

void 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.");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值