|
阅读:5334回复:0
C语言,实现一个二分查找的算法
使用C语言,实现一个二分查找的算法:
#include <stdio.h>
#include<stdlib.h>
int includeValue(int scores[],int val,int len){
int low=0,high=len-1,mid;
while(low<=high){
mid = (low + high) / 2;
if(scores[mid]>val){
high = mid-1;
}else if(scores[mid]<val){
low=mid+1;
}else if(scores[mid]==val){
return mid;
}
}
return -1;
}
int main()
{
int score[]={7,10,13,16,19,29,32,33,37,41,43};
int len = sizeof(score) / sizeof(score[0]);
int val= 43;
int index = includeValue(score,val,len);
printf("%d",index);
return 0;
}#思路# 二分查找适用于有序的顺序表,基本的思路是:首先将给定的关键字key与表array的中间位置的元素进行比较。如果相等,则查找成功,如果不相等,则查找的元素一定在表的前半部分或者后半部分。继续缩小范围到前半部分或者后半部分再进行同样的查找,直到找到为止,或者查完之后仍然没有找到元素。下面给出一次算法的查找过程实例: #实例# 假设数组array为[7,10,13,16,19,29,32,33,37,41,43],要查找的元素为11: 图片:2018060320181268.png ![]() #复杂度# 时间复杂度为O(log₂n),空间复杂度为O(1) 原文链接:https://blog.csdn.net/m0_37316917/article/details/80559813 |
|
|
